summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSiluxsept <ronny.horn.rh@gmail.com>2025-06-12 12:09:15 +0200
committerSiluxsept <ronny.horn.rh@gmail.com>2025-06-23 16:50:07 +0200
commite47e498746a27d648d9e234d73d231ed183ceef6 (patch)
tree8a6e02262849352f0f7aaff44b1476532e936119
parent453a24c42edff77cb80b83d6dcea323e0871a157 (diff)
B4S4: prepare for V15.0
*from https://github.com/LineageOS/android_device_google_bonito Change-Id: I14999570374feadb1eea75eead33c2ff07860097
-rw-r--r--Android.bp1
-rw-r--r--Android.mk38
-rw-r--r--BoardConfig-common.mk8
-rw-r--r--BoardConfigLineage.mk4
-rw-r--r--CleanSpec.mk209
-rw-r--r--aicp.dependencies18
-rw-r--r--aicp_bonito.mk7
-rw-r--r--aicp_sargo.mk7
-rw-r--r--aosp_bonito.mk1
-rw-r--r--aosp_sargo.mk1
-rwxr-xr-xbonito/extract-files.py96
-rwxr-xr-xbonito/extract-files.sh86
-rw-r--r--[-rwxr-xr-x]bonito/overlay/frameworks/base/core/res/res/values/config.xml0
-rw-r--r--bonito/proprietary-files-radio.txt62
-rw-r--r--bonito/proprietary-files-vendor.txt60
-rw-r--r--bonito/proprietary-files.txt9
-rwxr-xr-xbonito/regen-carriersettings.sh47
-rwxr-xr-xbonito/regen-vendor.sh1395
-rwxr-xr-xbonito/setup-makefiles.py1
-rwxr-xr-xbonito/setup-makefiles.sh41
-rw-r--r--bootctrl/Android.bp25
-rw-r--r--device-bonito.mk3
-rw-r--r--device-common.mk6
-rw-r--r--device-lineage.mk136
-rw-r--r--device-sargo.mk3
-rw-r--r--device.mk54
-rw-r--r--dumpstate/Android.bp (renamed from gpt-utils/Android.bp)40
-rw-r--r--dumpstate/Android.mk44
-rw-r--r--[-rwxr-xr-x]dumpstate/DumpstateDevice.cpp0
-rwxr-xr-xextract-files.py13
-rwxr-xr-xextract-files.sh13
-rw-r--r--gpt-utils/gpt-utils.cpp1546
-rw-r--r--gpt-utils/gpt-utils.h197
-rw-r--r--json-c/AUTHORS5
-rw-r--r--json-c/Android.configure.mk39
-rw-r--r--json-c/COPYING42
-rw-r--r--json-c/ChangeLog218
-rw-r--r--json-c/Doxyfile1153
-rw-r--r--json-c/Makefile.am74
-rw-r--r--json-c/Makefile.am.inc2
-rw-r--r--json-c/README0
-rw-r--r--json-c/README-WIN32.html50
-rw-r--r--json-c/README.html34
-rw-r--r--json-c/README.md63
-rw-r--r--json-c/RELEASE_CHECKLIST.txt132
-rw-r--r--json-c/arraylist.c102
-rw-r--r--json-c/arraylist.h56
-rwxr-xr-xjson-c/autogen.sh13
-rw-r--r--json-c/bits.h35
-rw-r--r--json-c/check.log2
-rw-r--r--json-c/config.h178
-rw-r--r--json-c/config.h.in177
-rw-r--r--json-c/configure.ac107
-rw-r--r--json-c/debug.c83
-rw-r--r--json-c/debug.h71
-rw-r--r--json-c/json-c-uninstalled.pc.in11
-rw-r--r--json-c/json-c.pc.in11
-rw-r--r--json-c/json.h33
-rw-r--r--json-c/json_c_version.c20
-rw-r--r--json-c/json_c_version.h22
-rw-r--r--json-c/json_config.h4
-rw-r--r--json-c/json_config.h.in3
-rw-r--r--json-c/json_inttypes.h28
-rw-r--r--json-c/json_object.c913
-rw-r--r--json-c/json_object.h617
-rw-r--r--json-c/json_object_iterator.c168
-rw-r--r--json-c/json_object_iterator.h239
-rw-r--r--json-c/json_object_private.h47
-rw-r--r--json-c/json_tokener.c887
-rw-r--r--json-c/json_tokener.h208
-rw-r--r--json-c/json_util.c299
-rw-r--r--json-c/json_util.h50
-rw-r--r--json-c/libjson.c26
-rw-r--r--json-c/linkhash.c602
-rw-r--r--json-c/linkhash.h292
-rw-r--r--json-c/math_compat.h28
-rw-r--r--json-c/printbuf.c193
-rw-r--r--json-c/printbuf.h77
-rw-r--r--json-c/random_seed.c237
-rw-r--r--json-c/random_seed.h25
-rw-r--r--manifest.xml33
-rw-r--r--media_codecs.xml1
-rw-r--r--media_codecs_omx.xml275
-rw-r--r--media_codecs_performance.xml46
-rw-r--r--[-rwxr-xr-x]overlay/packages/apps/Settings/res/values/bools.xml0
-rw-r--r--[-rwxr-xr-x]overlay/packages/apps/Settings/res/values/config.xml0
-rwxr-xr-xsargo/extract-files.py96
-rwxr-xr-xsargo/extract-files.sh86
-rw-r--r--[-rwxr-xr-x]sargo/overlay/frameworks/base/core/res/res/values/config.xml0
-rw-r--r--sargo/proprietary-files-radio.txt62
-rw-r--r--sargo/proprietary-files-vendor.txt60
-rw-r--r--sargo/proprietary-files.txt9
-rwxr-xr-xsargo/regen-carriersettings.sh47
-rwxr-xr-xsargo/regen-vendor.sh1395
-rwxr-xr-xsargo/setup-makefiles.py1
-rwxr-xr-xsargo/setup-makefiles.sh41
-rw-r--r--sdm710/thermal-engine/Android.mk6
-rw-r--r--sdm710/thermal-engine/thermal_client.h94
-rw-r--r--seccomp_policy/mediacodec.policy9
-rw-r--r--self-extractors/Android.mk0
-rw-r--r--self-extractors/google_devices/staging/Android.mk.template (renamed from self-extractors/google_devices/staging/Android.mk)0
-rw-r--r--self-extractors/qcom/staging/Android.mk.template (renamed from self-extractors/qcom/staging/Android.mk)0
-rw-r--r--self-extractors_sargo/Android.mk0
-rw-r--r--self-extractors_sargo/google_devices/staging/Android.mk.template (renamed from self-extractors_sargo/google_devices/staging/Android.mk)0
-rw-r--r--self-extractors_sargo/qcom/staging/Android.mk.template (renamed from self-extractors_sargo/qcom/staging/Android.mk)0
-rw-r--r--sepolicy/vendor/qcom/common/file.te2
-rw-r--r--sepolicy/vendor/qcom/common/file_contexts4
-rw-r--r--sepolicy/vendor/qcom/common/genfs_contexts1
-rw-r--r--sepolicy/vendor/qcom/common/hal_fingerprint.te4
-rw-r--r--sepolicy/vendor/qcom/common/hal_lineage_health_default.te1
-rw-r--r--sepolicy/vendor/qcom/common/hal_memtrack_default.te3
-rwxr-xr-xsetup-makefiles.py13
-rw-r--r--ueventd.hardware.rc4
113 files changed, 325 insertions, 13815 deletions
diff --git a/Android.bp b/Android.bp
index 1b024303..3d0dcf0c 100644
--- a/Android.bp
+++ b/Android.bp
@@ -2,7 +2,6 @@ soong_namespace {
imports: [
"hardware/google/interfaces",
"hardware/google/pixel",
- "hardware/qcom/bootctrl",
],
}
diff --git a/Android.mk b/Android.mk
deleted file mode 100644
index 46e75c8c..00000000
--- a/Android.mk
+++ /dev/null
@@ -1,38 +0,0 @@
-#
-# Copyright 2017 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.
-#
-
-LOCAL_PATH := $(call my-dir)
-
-$(eval $(call declare-copy-files-license-metadata,device/google/bonito,default-permissions.xml,SPDX-license-identifier-Apache-2.0,notice,build/soong/licenses/LICENSE,))
-$(eval $(call declare-copy-files-license-metadata,device/google/bonito,libnfc-nci.conf,SPDX-license-identifier-Apache-2.0,notice,build/soong/licenses/LICENSE,))
-$(eval $(call declare-copy-files-license-metadata,device/google/bonito,fstab.postinstall,SPDX-license-identifier-Apache-2.0,notice,build/soong/licenses/LICENSE,))
-$(eval $(call declare-copy-files-license-metadata,device/google/bonito,ueventd.rc,SPDX-license-identifier-Apache-2.0,notice,build/soong/licenses/LICENSE,))
-$(eval $(call declare-copy-files-license-metadata,device/google/bonito,wpa_supplicant.conf,SPDX-license-identifier-Apache-2.0,notice,build/soong/licenses/LICENSE,))
-$(eval $(call declare-copy-files-license-metadata,device/google/bonito,hals.conf,SPDX-license-identifier-Apache-2.0,notice,build/soong/licenses/LICENSE,))
-$(eval $(call declare-copy-files-license-metadata,device/google/bonito,media_profiles_V1_0.xml,SPDX-license-identifier-Apache-2.0,notice,build/soong/licenses/LICENSE,))
-$(eval $(call declare-copy-files-license-metadata,device/google/bonito,media_codecs_performance.xml,SPDX-license-identifier-Apache-2.0,notice,build/soong/licenses/LICENSE,))
-$(eval $(call declare-copy-files-license-metadata,device/google/bonito,device_state_configuration.xml,SPDX-license-identifier-Apache-2.0,notice,build/soong/licenses/LICENSE,))
-$(eval $(call declare-copy-files-license-metadata,device/google/bonito,task_profiles.json,SPDX-license-identifier-Apache-2.0,notice,build/soong/licenses/LICENSE,))
-$(eval $(call declare-copy-files-license-metadata,device/google/bonito,p2p_supplicant.conf,SPDX-license-identifier-Apache-2.0,notice,build/soong/licenses/LICENSE,))
-$(eval $(call declare-copy-files-license-metadata,device/google/bonito,wpa_supplicant.conf,SPDX-license-identifier-Apache-2.0,notice,build/soong/licenses/LICENSE,))
-$(eval $(call declare-copy-files-license-metadata,device/google/bonito,wpa_supplicant_overlay.conf,SPDX-license-identifier-Apache-2.0,notice,build/soong/licenses/LICENSE,))
-
-$(eval $(call declare-1p-copy-files,device/google/bonito,audio_policy_configuration.xml))
-
-ifeq ($(USES_DEVICE_GOOGLE_B4S4),true)
- subdir_makefiles=$(call first-makefiles-under,$(LOCAL_PATH))
- $(foreach mk,$(subdir_makefiles),$(info including $(mk) ...)$(eval include $(mk)))
-endif
diff --git a/BoardConfig-common.mk b/BoardConfig-common.mk
index 62790363..22835a69 100644
--- a/BoardConfig-common.mk
+++ b/BoardConfig-common.mk
@@ -37,8 +37,6 @@ TARGET_2ND_CPU_VARIANT_RUNTIME := cortex-a75
TARGET_BOARD_COMMON_PATH := device/google/bonito/sdm710
-BUILD_BROKEN_DUP_RULES := true
-
BOARD_KERNEL_CMDLINE += console=ttyMSM0,115200n8 androidboot.console=ttyMSM0 printk.devkmsg=on
BOARD_KERNEL_CMDLINE += msm_rtb.filter=0x237
BOARD_KERNEL_CMDLINE += ehci-hcd.park=3
@@ -91,7 +89,7 @@ TARGET_RECOVERY_WIPE := device/google/bonito/recovery.wipe
TARGET_RECOVERY_FSTAB := device/google/bonito/fstab.hardware
TARGET_RECOVERY_PIXEL_FORMAT := RGBX_8888
TARGET_RECOVERY_UI_LIB := \
- librecovery_ui_pixel \
+ //hardware/google/pixel/recovery:librecovery_ui_pixel \
libfstab
# system.img
@@ -146,11 +144,7 @@ TARGET_NO_RPC := true
BOARD_VENDOR_QCOM_GPS_LOC_API_HARDWARE := default
BOARD_VENDOR_QCOM_LOC_PDK_FEATURE_SET := true
-# RenderScript
-OVERRIDE_RS_DRIVER := libRSDriver_adreno.so
-
# Sensors
-USE_SENSOR_MULTI_HAL := true
TARGET_SUPPORT_DIRECT_REPORT := true
# Enable sensor Version V_2
USE_SENSOR_HAL_VER := 2.0
diff --git a/BoardConfigLineage.mk b/BoardConfigLineage.mk
index 61d03f4b..4213dafa 100644
--- a/BoardConfigLineage.mk
+++ b/BoardConfigLineage.mk
@@ -4,8 +4,6 @@
# SPDX-License-Identifier: Apache-2.0
#
-BUILD_BROKEN_ELF_PREBUILT_PRODUCT_COPY_FILES := true
-
# Kernel
BOARD_KERNEL_IMAGE_NAME := Image.lz4
TARGET_COMPILE_WITH_MSM_KERNEL := true
@@ -31,7 +29,7 @@ BOARD_VENDORIMAGE_FILE_SYSTEM_TYPE := ext4
# Reserve space for gapps install
-include vendor/aicp/config/BoardConfigReservedSize.mk
ifneq ($(WITH_GMS),true)
-BOARD_PRODUCTIMAGE_PARTITION_RESERVED_SIZE := 1069547520
+BOARD_PRODUCTIMAGE_PARTITION_RESERVED_SIZE := 1048576000
endif
# SELinux
diff --git a/CleanSpec.mk b/CleanSpec.mk
deleted file mode 100644
index a532eb87..00000000
--- a/CleanSpec.mk
+++ /dev/null
@@ -1,209 +0,0 @@
-# Copyright 2017 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.
-#
-
-# If you don't need to do a full clean build but would like to touch
-# a file or delete some intermediate files, add a clean step to the end
-# of the list. These steps will only be run once, if they haven't been
-# run before.
-#
-# E.g.:
-# $(call add-clean-step, touch -c external/sqlite/sqlite3.h)
-# $(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/STATIC_LIBRARIES/libz_intermediates)
-#
-# Always use "touch -c" and "rm -f" or "rm -rf" to gracefully deal with
-# files that are missing or have been moved.
-#
-# Use $(PRODUCT_OUT) to get to the "out/target/product/blah/" directory.
-# Use $(OUT_DIR) to refer to the "out" directory.
-#
-# If you need to re-do something that's already mentioned, just copy
-# the command and add it to the bottom of the list. E.g., if a change
-# that you made last week required touching a file and a change you
-# made today requires touching the same file, just copy the old
-# touch step and add it to the end of the list.
-#
-# ************************************************
-# NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST
-# ************************************************
-
-# For example:
-#$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/APPS/AndroidTests_intermediates)
-#$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/core_intermediates)
-#$(call add-clean-step, find $(OUT_DIR) -type f -name "IGTalkSession*" -print0 | xargs -0 rm -f)
-#$(call add-clean-step, rm -rf $(PRODUCT_OUT)/data/*)
-
-$(call add-clean-step, rm -rf $(PRODUCT_OUT))
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor)
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor)
-
-# Remove /system/lib[64]/vndk-sp/libz.so
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/lib/vndk-sp/libz.so)
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/lib64/vndk-sp/libz.so)
-
-# Remove Power HAL 1.2
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/etc/init/android.hardware.power@1.2-service.bonito-libperfmgr.rc)
-
-# Remove Vibrator HAL 1.1
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/etc/init/android.hardware.vibrator@1.1-service.bonito.rc)
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/bin/hw/android.hardware.vibrator@1.1-service.bonito)
-
-# Remove /product mount point
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/product)
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/root/product)
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/product)
-
-# Remove android.hardware.audio*@2.0 implementation
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/lib/hw/android.hardware.audio*@2.0-impl.so)
-
-# Adds product.img
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/product)
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/root/product)
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/app)
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/etc)
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/fonts)
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/framework)
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/media)
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/priv-app)
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/product)
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/usr)
-
-# Remove default android.hardware.health@2.0-service
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/bin/hw/android.hardware.health@2.0-service)
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/etc/init/android.hardware.health@2.0-service.rc)
-
-# Remove healthd
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/bin/healthd)
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/etc/init/healthd.rc)
-
-# Remove KM3 RC
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/etc/init/android.hardware.keymaster@3.0-service-qti.rc)
-
-# Remove Codec2.0 software process
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/hw/hardware.google.media.c2@1.0-service-software)
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/etc/init/hardware.google.media.c2@1.0-service-software.rc)
-
-# Remove default android.hardware.graphics.composer@2.1
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/bin/hw/android.hardware.graphics.composer@2.1-service)
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/etc/init/android.hardware.graphics.composer@2.1-service.rc)
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/lib64/hw/android.hardware.graphics.composer@2.1-impl.so)
-
-# Remove StrongBox RC
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/etc/init/android.hardware.keymaster@4.1-service.citadel.rc)
-
-# Migrate to versioned VNDK directory
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/lib/vndk-sp)
-
-# Remove non-qti-display mapper (b/79269048)
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/lib/hw/android.hardware.graphics.mapper@2.0-impl.so)
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/lib64/hw/android.hardware.graphics.mapper@2.0-impl.so)
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/lib/hw/android.hardware.graphics.allocator@2.0-impl.so)
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/lib64/hw/android.hardware.graphics.allocator@2.0-impl.so)
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/bin/hw/android.hardware.graphics.allocator@2.0-service)
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/etc/init/android.hardware.graphics.allocator@2.0-service.rc)
-
-#AU300 cleanup
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor)
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system)
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/product)
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/include)
-
-# Secure_element HAL for eSE1
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/etc/init/android.hardware.secure_element@1.0-service.rc)
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/bin/hw/android.hardware.secure_element@1.0-service)
-
-# Remove VR related files
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/etc/thermal-engine-sargo-vr.conf)
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/etc/thermal-engine-bonito-vr.conf)
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/etc/init/android.hardware.vr@1.0-service.bonito.rc)
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/etc/permissions/android.hardware.vr.headtracking.xml)
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/etc/permissions/android.hardware.vr.high_performance.xml)
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/bin/hw/android.hardware.vr@1.0-service.bonito)
-
-# Remove /product mount point
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/product)
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/root/product)
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/product)
-
-# Remove init.environ.rc to force product to be recreated on other devices
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/root/init.environ.rc)
-
-# Verified boot xml moved to /product
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/etc/permissions/android.software.verified_boot.xml)
-
-# Move libnfc-nci.conf to /vendor
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/etc/libnfc-nci.conf)
-
-# ThermalHAL 1.1
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/etc/init/android.hardware.thermal@1.1-service.bonito.rc)
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/bin/hw/android.hardware.thermal@1.1-service.bonito)
-
-# Move fingerprint input files to /vendor
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/usr/keylayout/uinput-fpc.kl)
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/usr/idc/uinput-fpc.idc)
-
-# Recovery init files moved to recovery
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/root/init.recovery.*.rc)
-
-# Add product partition
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/product)
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/root/product)
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/app)
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/etc)
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/fonts)
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/framework)
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/media)
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/priv-app)
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/product)
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/usr)
-
-# Rename power HAL
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/etc/init/android.hardware.power@1.3-service.bonito-libperfmgr.rc)
-
-# Remove generic atrace HAL
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/etc/init/android.hardware.atrace@1.0-service.rc)
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/etc/vintf/manifest/android.hardware.atrace@1.0-service.xml)
-
-# Remove obsolete android.hardware.boot@1.0-impl-wrapper.recovery.so
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/recovery/root/system/lib64/hw/android.hardware.boot@1.0-impl-wrapper.recovery.so)
-
-# Vibrator HAL 1.2 renamed from 'bonito' to 'drv2624'
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/etc/init/android.hardware.vibrator@1.2-service.bonito.rc)
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/bin/hw/android.hardware.vibrator@1.2-service.bonito)
-
-# Vibrator HAL upgraded from 1-2 to 1-3
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/etc/init/android.hardware.vibrator@1.2-service.drv2624.rc)
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/bin/hw/android.hardware.vibrator@1.2-service.drv2624)
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/etc/vintf/manifest/android.hardware.vibrator@1.2-service.drv2624.xml)
-
-# Move android.hidl.base@1.0.so to system_ext
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/lib/android.hidl.base@1.0.so)
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/lib64/android.hidl.base@1.0.so)
-
-# Removing GSI keys from the ramdisk.
-# Those keys will be embedded into VTS instead, to verify the GSI image in used.
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/recovery/root/first_stage_ramdisk/avb/q-gsi.avbpubkey)
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/recovery/root/first_stage_ramdisk/avb/r-gsi.avbpubkey)
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/recovery/root/first_stage_ramdisk/avb/s-gsi.avbpubkey)
-
-# Use stable aidl power HAL
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/etc/init/android.hardware.power@1.3-service.pixel-libperfmgr.rc)
-
-# Update to USB HAL 1.3
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/bin/hw/android.hardware.usb@1.2-service.bonito)
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/etc/init/android.hardware.usb@1.2-service.bonito.rc)
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/etc/vintf/manifest/android.hardware.usb@1.2-service.bonito.xml)
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/bin/hw/android.hardware.usb@1.3-service.bonito)
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/etc/init/android.hardware.usb@1.3-service.bonito.rc)
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/etc/vintf/manifest/android.hardware.usb@1.3-service.bonito.xml)
diff --git a/aicp.dependencies b/aicp.dependencies
index 601fb041..22f7a691 100644
--- a/aicp.dependencies
+++ b/aicp.dependencies
@@ -3,30 +3,18 @@
"remote": "aicp",
"repository": "AICP/kernel_google_msm-4.9",
"target_path": "kernel/google/msm-4.9",
- "branch": "u14.0"
+ "branch": "v15.0"
},
{
"remote": "aicp",
"repository": "LineageOS/android_packages_apps_ElmyraService",
"target_path": "packages/apps/ElmyraService",
- "branch": "lineage-21.0"
+ "branch": "lineage-22.2"
},
{
"remote": "aicp",
"repository": "LineageOS/android_device_google_gs-common",
"target_path": "device/google/gs-common",
- "branch": "lineage-21"
- },
- {
- "remote": "gitlab",
- "repository": "MindTheGapps/vendor_gapps",
- "target_path": "vendor/gapps",
- "branch": "upsilon"
- },
- {
- "remote": "aicp",
- "repository": "Evolution-X/vendor_certification",
- "target_path": "vendor/certification",
- "branch": "udc"
+ "branch": "lineage-22.2"
}
]
diff --git a/aicp_bonito.mk b/aicp_bonito.mk
index 73eb7cf4..0e2c4abc 100644
--- a/aicp_bonito.mk
+++ b/aicp_bonito.mk
@@ -22,9 +22,8 @@ TARGET_SCREEN_HEIGHT := 2160
TARGET_SCREEN_WIDTH := 1080
PRODUCT_BUILD_PROP_OVERRIDES += \
- TARGET_PRODUCT==bonito \
- PRIVATE_BUILD_DESC="bonito-user 12 SP2A.220505.008 8782922 release-keys"
-
-BUILD_FINGERPRINT := google/bonito/bonito:12/SP2A.220505.008/8782922:user/release-keys
+ BuildDesc="bonito-user 12 SP2A.220505.008 8782922 release-keys" \
+ BuildFingerprint=google/bonito/bonito:12/SP2A.220505.008/8782922:user/release-keys \
+ DeviceProduct=bonito
$(call inherit-product, vendor/google/bonito/bonito-vendor.mk)
diff --git a/aicp_sargo.mk b/aicp_sargo.mk
index 16274dbe..c7e12ab0 100644
--- a/aicp_sargo.mk
+++ b/aicp_sargo.mk
@@ -22,9 +22,8 @@ TARGET_SCREEN_HEIGHT := 2220
TARGET_SCREEN_WIDTH := 1080
PRODUCT_BUILD_PROP_OVERRIDES += \
- TARGET_PRODUCT=sargo \
- PRIVATE_BUILD_DESC="sargo-user 12 SP2A.220505.008 8782922 release-keys"
-
-BUILD_FINGERPRINT := google/sargo/sargo:12/SP2A.220505.008/8782922:user/release-keys
+ BuildDesc="sargo-user 12 SP2A.220505.008 8782922 release-keys" \
+ BuildFingerprint=google/sargo/sargo:12/SP2A.220505.008/8782922:user/release-keys \
+ DeviceProduct=sargo
$(call inherit-product, vendor/google/sargo/sargo-vendor.mk)
diff --git a/aosp_bonito.mk b/aosp_bonito.mk
index e4f3898e..6ae2652f 100644
--- a/aosp_bonito.mk
+++ b/aosp_bonito.mk
@@ -39,6 +39,7 @@ $(call inherit-product, $(SRC_TARGET_DIR)/product/aosp_product.mk)
# All components inherited here go to vendor image
#
# TODO(b/136525499): move *_vendor.mk into the vendor makefile later
+TARGET_SUPPORTS_OMX_SERVICE := false
$(call inherit-product, $(SRC_TARGET_DIR)/product/handheld_vendor.mk)
$(call inherit-product, $(SRC_TARGET_DIR)/product/telephony_vendor.mk)
diff --git a/aosp_sargo.mk b/aosp_sargo.mk
index 1de61a7e..11cfbc2a 100644
--- a/aosp_sargo.mk
+++ b/aosp_sargo.mk
@@ -39,6 +39,7 @@ $(call inherit-product, $(SRC_TARGET_DIR)/product/aosp_product.mk)
# All components inherited here go to vendor image
#
# TODO(b/136525499): move *_vendor.mk into the vendor makefile later
+TARGET_SUPPORTS_OMX_SERVICE := false
$(call inherit-product, $(SRC_TARGET_DIR)/product/handheld_vendor.mk)
$(call inherit-product, $(SRC_TARGET_DIR)/product/telephony_vendor.mk)
diff --git a/bonito/extract-files.py b/bonito/extract-files.py
new file mode 100755
index 00000000..a8c92de6
--- /dev/null
+++ b/bonito/extract-files.py
@@ -0,0 +1,96 @@
+#!/usr/bin/env -S PYTHONPATH=../../../../tools/extract-utils python3
+#
+# SPDX-FileCopyrightText: 2024 The LineageOS Project
+# SPDX-License-Identifier: Apache-2.0
+#
+
+from extract_utils.extract import extract_fns_user_type
+from extract_utils.extract_pixel import (
+ extract_pixel_factory_image,
+ extract_pixel_firmware,
+ pixel_factory_image_regex,
+ pixel_firmware_regex,
+)
+from extract_utils.fixups_blob import (
+ blob_fixup,
+ blob_fixups_user_type,
+)
+from extract_utils.fixups_lib import (
+ lib_fixups,
+ lib_fixups_user_type,
+)
+from extract_utils.main import (
+ ExtractUtils,
+ ExtractUtilsModule,
+)
+
+namespace_imports = [
+ 'hardware/google/interfaces',
+ 'hardware/google/pixel',
+ 'hardware/qcom/sdm845',
+ 'hardware/qcom/wlan/legacy',
+]
+
+
+def lib_fixup_vendor_suffix(lib: str, partition: str, *args, **kwargs):
+ return f'{lib}_{partition}' if partition == 'vendor' else None
+
+
+lib_fixups: lib_fixups_user_type = {
+ **lib_fixups,
+ (
+ 'vendor.qti.hardware.tui_comm@1.0',
+ 'vendor.qti.imsrtpservice@3.0',
+ ): lib_fixup_vendor_suffix,
+}
+
+blob_fixups: blob_fixups_user_type = {
+ 'product/etc/sysconfig/nexus.xml': blob_fixup()
+ .regex_replace('qulacomm', 'qualcomm'),
+ (
+ 'vendor/bin/hw/android.hardware.identity@1.0-service.citadel',
+ 'vendor/lib64/android.hardware.identity@1.0-impl.nos.so',
+ ): blob_fixup()
+ .replace_needed('android.hardware.identity-V3-ndk_platform.so', 'android.hardware.identity-V3-ndk.so')
+ .replace_needed('android.hardware.keymaster-V3-ndk_platform.so', 'android.hardware.keymaster-V3-ndk.so'),
+ 'vendor/bin/hw/android.hardware.rebootescrow-service.citadel': blob_fixup()
+ .replace_needed('android.hardware.rebootescrow-V1-ndk_platform.so', 'android.hardware.rebootescrow-V1-ndk.so')
+ .replace_needed('libcrypto.so', 'libcrypto-v33.so')
+ .add_needed('libcrypto_shim.so'),
+ (
+ 'vendor/bin/hw/citadeld',
+ 'vendor/lib64/libnos_citadeld_proxy.so',
+ ): blob_fixup()
+ .replace_needed('android.frameworks.stats-V1-ndk_platform.so', 'android.frameworks.stats-V1-ndk.so')
+ .replace_needed('pixelatoms-cpp.so', 'pixelatoms-cpp-legacy.so'),
+ 'vendor/bin/hw/vendor.qti.media.c2@1.0-service': blob_fixup()
+ .replace_needed('libavservices_minijail_vendor.so', 'libavservices_minijail.so'),
+ 'vendor/lib64/android.hardware.keymaster@4.1-impl.nos.so': blob_fixup()
+ .add_needed('libcrypto_shim.so'),
+ 'vendor/lib64/hw/com.qti.chi.override.so': blob_fixup()
+ .replace_needed('android.hardware.power-V1-ndk_platform.so', 'android.hardware.power-V1-ndk.so'),
+} # fmt: skip
+
+extract_fns: extract_fns_user_type = {
+ pixel_factory_image_regex: extract_pixel_factory_image,
+ pixel_firmware_regex: extract_pixel_firmware,
+}
+
+module = ExtractUtilsModule(
+ 'bonito',
+ 'google',
+ device_rel_path='device/google/bonito/bonito',
+ blob_fixups=blob_fixups,
+ lib_fixups=lib_fixups,
+ namespace_imports=namespace_imports,
+ add_firmware_proprietary_file=True,
+ extract_fns=extract_fns,
+)
+
+module.add_proprietary_file('proprietary-files-carriersettings.txt')
+module.add_proprietary_file('proprietary-files-radio.txt')
+module.add_proprietary_file('proprietary-files-vendor.txt')
+
+if __name__ == '__main__':
+ utils = ExtractUtils.device(module)
+ utils.run()
diff --git a/bonito/extract-files.sh b/bonito/extract-files.sh
deleted file mode 100755
index 158236c8..00000000
--- a/bonito/extract-files.sh
+++ /dev/null
@@ -1,86 +0,0 @@
-#!/bin/bash
-#
-# Copyright (C) 2016 The CyanogenMod Project
-# Copyright (C) 2017-2023 The LineageOS Project
-#
-# SPDX-License-Identifier: Apache-2.0
-#
-
-set -e
-
-DEVICE=bonito
-VENDOR=google
-
-# Load extract_utils and do some sanity checks
-MY_DIR="${BASH_SOURCE%/*}"
-if [[ ! -d "${MY_DIR}" ]]; then MY_DIR="${PWD}"; fi
-
-ANDROID_ROOT="${MY_DIR}/../../../.."
-
-HELPER="${ANDROID_ROOT}/tools/extract-utils/extract_utils.sh"
-if [ ! -f "${HELPER}" ]; then
- echo "Unable to find helper script at ${HELPER}"
- exit 1
-fi
-source "${HELPER}"
-
-# Default to sanitizing the vendor folder before extraction
-CLEAN_VENDOR=true
-
-KANG=
-SECTION=
-
-while [ "${#}" -gt 0 ]; do
- case "${1}" in
- -n | --no-cleanup )
- CLEAN_VENDOR=false
- ;;
- -k | --kang )
- KANG="--kang"
- ;;
- -s | --section )
- SECTION="${2}"; shift
- CLEAN_VENDOR=false
- ;;
- * )
- SRC="${1}"
- ;;
- esac
- shift
-done
-
-if [ -z "${SRC}" ]; then
- SRC="adb"
-fi
-
-function blob_fixup() {
- case "${1}" in
- # Fix typo in qcrilmsgtunnel whitelist
- product/etc/sysconfig/nexus.xml)
- sed -i 's/qulacomm/qualcomm/' "${2}"
- ;;
- vendor/bin/hw/android.hardware.rebootescrow-service.citadel)
- "${PATCHELF}" --replace-needed "libcrypto.so" "libcrypto-v33.so" "${2}"
- ;;
- esac
-}
-
-function prepare_firmware() {
- if [ "${SRC}" != "adb" ]; then
- bash "${ANDROID_ROOT}"/lineage/scripts/pixel/prepare-firmware.sh "${DEVICE}" "${SRC}"
- fi
-}
-
-# Initialize the helper
-setup_vendor "${DEVICE}" "${VENDOR}" "${ANDROID_ROOT}" false "${CLEAN_VENDOR}"
-
-extract "${MY_DIR}/proprietary-files.txt" "${SRC}" "${KANG}" --section "${SECTION}"
-extract "${MY_DIR}/proprietary-files-carriersettings.txt" "${SRC}" "${KANG}" --section "${SECTION}"
-extract "${MY_DIR}/proprietary-files-radio.txt" "${SRC}" "${KANG}" --section "${SECTION}"
-extract "${MY_DIR}/proprietary-files-vendor.txt" "${SRC}" "${KANG}" --section "${SECTION}"
-
-if [ -z "${SECTION}" ]; then
- extract_firmware "${MY_DIR}/proprietary-firmware.txt" "${SRC}"
-fi
-
-"${MY_DIR}/setup-makefiles.sh"
diff --git a/bonito/overlay/frameworks/base/core/res/res/values/config.xml b/bonito/overlay/frameworks/base/core/res/res/values/config.xml
index 71887989..71887989 100755..100644
--- a/bonito/overlay/frameworks/base/core/res/res/values/config.xml
+++ b/bonito/overlay/frameworks/base/core/res/res/values/config.xml
diff --git a/bonito/proprietary-files-radio.txt b/bonito/proprietary-files-radio.txt
index 4060d72b..6f1ed1ea 100644
--- a/bonito/proprietary-files-radio.txt
+++ b/bonito/proprietary-files-radio.txt
@@ -1,9 +1,9 @@
# CNE - from coral - TP1A.221005.002.B2
vendor/app/CneApp/CneApp.apk;REQUIRED=CneApp.libvndfwk_detect_jni.qti_symlink|8c05c492f3673a0e52d86dbd01c144d502fe51f5
vendor/bin/cnd|00c98e93cb936320d90af32a26078e6e97a8c5eb
-vendor/etc/cne/Nexus/ATT/ATT_profiles.xml|a0039cb3a4c5a4ca1adf897904b61c91e32d06f7|33e568627fd3f94dc45bca1c01ad10e6d8fb5b52
-vendor/etc/cne/Nexus/ROW/ROW_profiles.xml|e3907ff71cbbe0f1073ec1bf0223d26c8282aa35|238e785e9674b27c4b2365958d127533d7293132
-vendor/etc/cne/Nexus/VZW/VZW_profiles.xml|0d35b3266ea656d8868ae8f5d7e938f4859e9b0a|0f63b632e3a3f114def7aeadaabd13851c8ceec5
+vendor/etc/cne/Nexus/ATT/ATT_profiles.xml|a0039cb3a4c5a4ca1adf897904b61c91e32d06f7
+vendor/etc/cne/Nexus/ROW/ROW_profiles.xml|e3907ff71cbbe0f1073ec1bf0223d26c8282aa35
+vendor/etc/cne/Nexus/VZW/VZW_profiles.xml|0d35b3266ea656d8868ae8f5d7e938f4859e9b0a
vendor/etc/cne/mwqem.conf|c42ad47b34b511075e5dfb9047d32f881fe0c159
vendor/etc/cne/profileMwqem.xml|947917691684584b7e2ddf3588cd6f8e99f3804f
vendor/etc/cne/wqeclient/ATT/ATT_profile1.xml|578f3f8f56059bfdbef926bcc68d01c15e06951f
@@ -34,29 +34,7 @@ vendor/etc/cne/wqeclient/VZW/VZW_profile4.xml|ff91feb5060a6df07e3e4d9bc99ae58bcc
vendor/etc/cne/wqeclient/VZW/VZW_profile5.xml|f76c894f3c6d5b6ed35113a088dc3174c900501b
vendor/etc/cne/wqeclient/VZW/VZW_profile6.xml|14d136e7fcc682311757d3edc0b9d3eaeba11815
vendor/etc/init/cnd-generic.rc|5ec06d42d32b58bf5c73b77d485606c477d57324
-vendor/lib/libcne.so|d5455fe1491870c2469eb0d5479130aeacd361a7
-vendor/lib/libcneapiclient.so|9366beb21450011bc6c7fb95d985a26da41b7dbb
-vendor/lib/libcneoplookup.so|46789f90f01a6a669a53647e189900712aebad0d
-vendor/lib/libcneqmiutils.so|8b97ff1bb8ab0f2ded483d243d87289de33db72b
-vendor/lib/libwms.so|d7a8df1240b4846a752195bad6b0c493fa42d13f
-vendor/lib/libwqe.so|deec314722d1ebb4d847f2e7983eb92a201bada6
vendor/lib/libxml.so|b453fbd6fcaae2d13f51a8838cf975de8d562e20
-vendor/lib/vendor.qti.data.factory@2.0.so|cc920d710a51ec5638acec13bfcf3faff8cb8fdf
-vendor/lib/vendor.qti.data.factory@2.1.so|32ecdbebbce71746a244c7a3e70decbab819ee87
-vendor/lib/vendor.qti.data.factory@2.2.so|bf46ecfff10609dc22aed0da0414fc8d3fe230bf
-vendor/lib/vendor.qti.data.factory@2.3.so|66659e5ff8ffa4f0ccdc64a588e1fee036d5a663
-vendor/lib/vendor.qti.data.mwqem@1.0.so|a4953eaf4fd719e8eb7b44e9042976cbedc70ee6
-vendor/lib/vendor.qti.data.slm@1.0.so|b3f16e4d8a1ba347f1ff6033228be2c49de55953
-vendor/lib/vendor.qti.hardware.data.cne.internal.api@1.0.so|18647099b9e71aabbbb21636540cabfa1fc9426d
-vendor/lib/vendor.qti.hardware.data.cne.internal.constants@1.0.so|fedc651cf3ad3c4bc084d359404d7113e6866336
-vendor/lib/vendor.qti.hardware.data.cne.internal.server@1.0.so|4c310a92f8ae1dbec77ad5d000c31671a6dd6c37
-vendor/lib/vendor.qti.hardware.data.connection@1.0.so|f908c9a9b0de8696fb9c6f9dea1a49bbe444114c
-vendor/lib/vendor.qti.hardware.data.dynamicdds@1.0.so|a30ac71448d8712d8c69b884a8a9a0dea17d44ff
-vendor/lib/vendor.qti.hardware.data.latency@1.0.so|b6b66d2201a807ca15d90efc3404e7cd4d4a76a1
-vendor/lib/vendor.qti.hardware.data.lce@1.0.so|1227a2b1ac3c8adca5ca79eeb46f78af34043614
-vendor/lib/vendor.qti.hardware.data.qmi@1.0.so|4d6f1bea9ae5e97f7e456fc7946f913917dbd66c
-vendor/lib/vendor.qti.hardware.mwqemadapter@1.0.so|99048bc4f2aef592096d23d6098def735c3a5ca4
-vendor/lib/vendor.qti.hardware.slmadapter@1.0.so|e75b017e2e1f75821496bfec235eb400d6ecc3cc
vendor/lib64/libcne.so|1eb5ae1fdd51f05e25d38afd8a793d8adb0ed1cf
vendor/lib64/libcneapiclient.so|a3bd1e0e85f0684fe6c999f5dc17ffdbc14e8f24
vendor/lib64/libcneoplookup.so|573229322afd00b1bfb553f0eef72ce4e2c99ff4
@@ -108,38 +86,6 @@ vendor/etc/init/imsdatadaemon.rc|68e9a06b92817be8c59c3e2b00d95f5a7fa97a1b
vendor/etc/init/imsqmidaemon.rc|b0b9f70b5c56c89769255ea03d8e3f5050c08657
vendor/etc/init/imsrcsd.rc|a12f5a8efbfccf9a8ec47a39367382346eb8dc35
vendor/etc/seccomp_policy/imsrtp.policy|fb5f1f63dbc3a002ac0f203cce3b8d3434752fa2
-vendor/lib/com.qualcomm.qti.imscmservice@1.0.so|0395ecc6a78444be3cc585845f91cbcda55875f8
-vendor/lib/com.qualcomm.qti.imscmservice@2.0.so|b9dc935adf82410134d63406c4574567902b022e
-vendor/lib/com.qualcomm.qti.imscmservice@2.1.so|9dbeb7a9a115a1b91bb0f954070b2e2353076d72
-vendor/lib/com.qualcomm.qti.imscmservice@2.2.so|dce9d40f3bb4ced209019348cdde92a7d6f76519
-vendor/lib/com.qualcomm.qti.uceservice@2.0.so|7b7914430aece9acd88d3b8fb83d7838cf5d914b
-vendor/lib/com.qualcomm.qti.uceservice@2.1.so|b29e2c7292e020863b09991e88368b1aa375b1dc
-vendor/lib/com.qualcomm.qti.uceservice@2.2.so|870f9b16df935aab7c4a9b9c6194258f75c331c1
-vendor/lib/com.qualcomm.qti.uceservice@2.3.so|19e48d852e08785d6468fdae021d53da53977d3c
-vendor/lib/lib-imscmservice.so|38f5e8d9128c5a0eb425c19f867c324704563e30
-vendor/lib/lib-imsdpl.so|03a7b299db808ab81347cd7566b7ea9cd63f8d6a
-vendor/lib/lib-imsqimf.so|d4e1d33a87cc7b745642ac4b4fe36328fbdbe7aa
-vendor/lib/lib-imsrcs-v2.so|571999f88559ec6e75c1f6d0e18fcc0b28090143
-vendor/lib/lib-imsrcsbaseimpl.so|c98f6838658ca8bcfecf9a77dbf36ebed0d6f2a4
-vendor/lib/lib-imsvtcore.so|108575c6ad012c1e38a4100051041f920e883525
-vendor/lib/lib-imsxml.so|82219d37c0c7c77dbbad743ec15b992663c02b2b
-vendor/lib/lib-rcsconfig.so|13783a699f7e192e89b1b40fa5b1bdc19958ad0c
-vendor/lib/lib-rtpcommon.so|83d1c3a2d0a9a096742f0ae55ef77c18359e90f0
-vendor/lib/lib-rtpcore.so|59c05d07ab9fea55fb535a05ed5ca0f1bf429c7d
-vendor/lib/lib-rtpsl.so|de204d26ebfe21f640769dee9da74ea300130464
-vendor/lib/lib-siputility.so|0cd56a4a2c62c36b540ca644fe5bf006864a9b1a
-vendor/lib/lib-uceservice.so|93573179e5e62d0091eeb241c5891368145b35a1
-vendor/lib/librcc.so|2a98fdb6200b6d322e6aab0db07bb2c3874e2b7f
-vendor/lib/vendor.qti.ims.callcapability@1.0.so|6a2b8dcbb6c565c226853d322fe9b81f0dc5e8e4
-vendor/lib/vendor.qti.ims.callinfo@1.0.so|b77c30854532562d1368c02d23538edbe4a13a55
-vendor/lib/vendor.qti.ims.factory@1.0.so|6d196d5861b2a8b2abdba3df6dd7d2d3591dc5e6
-vendor/lib/vendor.qti.ims.factory@1.1.so|bc5ff74b8cb1ff76706b12072d29bb1a10cbcae5
-vendor/lib/vendor.qti.ims.rcsconfig@1.0.so|b2072e058696c248f59184ef4e2290d7d4b0d7e2
-vendor/lib/vendor.qti.ims.rcsconfig@1.1.so|c98e14a382990a88f0f946ca0c1340b83f7a2431
-vendor/lib/vendor.qti.ims.rcsconfig@2.0.so|1f5916daa9201c9ca6ae51452ebe9e28ae7e4576
-vendor/lib/vendor.qti.ims.rcsconfig@2.1.so|2fd70cf484b42c607b74175c3d9b9f4d93d81f10
-vendor/lib/vendor.qti.imsrtpservice@3.0-service-Impl.so|8d91a21a4fb1ed8323159af610fda78a752a3ed4
-vendor/lib/vendor.qti.imsrtpservice@3.0.so|ac0a1374a03cd01875ae7fac9eb26461349110f6
vendor/lib64/com.qualcomm.qti.imscmservice@1.0.so|c81670607cd83e49ef7799c33ee8d6671ddc1d2d
vendor/lib64/com.qualcomm.qti.imscmservice@2.0.so|5cc27542fa649723d0ade59a09f645c7d24b8218
vendor/lib64/com.qualcomm.qti.imscmservice@2.1.so|6e0037052bd4c8f607106c7b6ce7397fd2ef3430
@@ -184,7 +130,7 @@ vendor/lib64/vendor.qti.ims.rcsconfig@1.1.so|6b0a93fea15929f446c0819fc5411268b09
vendor/lib64/vendor.qti.ims.rcsconfig@2.0.so|edde36e3eaf91a7c26e378dc17c312b99e2cc65b
vendor/lib64/vendor.qti.ims.rcsconfig@2.1.so|dfe17b80d07b431615c35cbd3403f0c0c9455c6f
vendor/lib64/vendor.qti.imsrtpservice@3.0-service-Impl.so|29c39c454cd7c11368db5c480d151e0487f4e0ea
-vendor/lib64/vendor.qti.imsrtpservice@3.0.so|91cc47edc34172234d56156e7e69fa5b4871dd21
+vendor/lib64/vendor.qti.imsrtpservice@3.0.so;MODULE_SUFFIX=_vendor|91cc47edc34172234d56156e7e69fa5b4871dd21
# QMI - from coral - TP1A.221005.002.B2
vendor/bin/irsc_util|f194faebe803843eb855a72e172367e02dc49ecd
diff --git a/bonito/proprietary-files-vendor.txt b/bonito/proprietary-files-vendor.txt
index 2e7c2336..5d756fe5 100644
--- a/bonito/proprietary-files-vendor.txt
+++ b/bonito/proprietary-files-vendor.txt
@@ -1,4 +1,5 @@
# All blobs are extracted from Google factory images for each new ASB
+
vendor/app/TimeService/TimeService.apk
vendor/bin/adsprpcd
vendor/bin/cdsprpcd
@@ -352,14 +353,6 @@ vendor/firmware/wlanmdsp.mbn
vendor/framework/com.google.android.camera.experimental2018.jar
vendor/lib/android.hardware.sensors@2.0-impl.so
vendor/lib/btaudio_offload_if.so
-vendor/lib/camera/com.qti.sensormodule.metric_imx363.bin
-vendor/lib/camera/com.qti.sensormodule.primax_imx355.bin
-vendor/lib/camera/com.qti.sensormodule.primax_imx355_s.bin
-vendor/lib/camera/com.qti.tuned.default.bin
-vendor/lib/camera/fdconfigpreview.bin
-vendor/lib/camera/fdconfigpreviewlite.bin
-vendor/lib/camera/fdconfigvideo.bin
-vendor/lib/camera/fdconfigvideolite.bin
vendor/lib/egl/eglSubDriverAndroid.so
vendor/lib/egl/libEGL_adreno.so;SYMLINK=vendor/lib/libEGL_adreno.so
vendor/lib/egl/libGLESv1_CM_adreno.so
@@ -372,28 +365,16 @@ vendor/lib/hw/android.hardware.gatekeeper@1.0-impl-qti.so
vendor/lib/hw/sound_trigger.primary.sdm710.so
vendor/lib/hw/vendor.qti.hardware.qteeconnector@1.0-impl.so
vendor/lib/hw/vulkan.adreno.so
-vendor/lib/lib-dplmedia.so
-vendor/lib/libAlacSwDec.so
-vendor/lib/libApeSwDec.so
vendor/lib/libC2D2.so
vendor/lib/libCB.so
-vendor/lib/libFlacSwDec.so
vendor/lib/libGPQTEEC_vendor.so
vendor/lib/libGPTEE_vendor.so
vendor/lib/libGPreqcancel.so
vendor/lib/libGPreqcancel_svc.so
--vendor/lib/libMpeg4SwEncoder.so
-vendor/lib/libOmxAlacDecSw.so
-vendor/lib/libOmxAmrwbplusDec.so
-vendor/lib/libOmxApeDecSw.so
-vendor/lib/libOmxDsdDec.so
-vendor/lib/libOmxEvrcDec.so
-vendor/lib/libOmxQcelp13Dec.so
vendor/lib/libOpenCL-pixel.so
vendor/lib/libOpenCL.so
vendor/lib/libQSEEComAPI.so
vendor/lib/libQTEEConnector_vendor.so
-vendor/lib/libRSDriver_adreno.so
vendor/lib/libSecureUILib.so
vendor/lib/libStDrvInt.so
vendor/lib/libSubSystemShutdown.so
@@ -407,14 +388,14 @@ vendor/lib/libadm.so
vendor/lib/libadpcmdec.so
vendor/lib/libadreno_utils.so
vendor/lib/libadsp_default_listener.so
--vendor/lib/libadsprpc.so
+vendor/lib/libadsprpc.so
vendor/lib/libash.so
vendor/lib/libaudcal.so
vendor/lib/libaudioalsa.so
vendor/lib/libbase64.so
vendor/lib/libbccQTI.so
vendor/lib/libbluetooth_audio_session_qti.so
--vendor/lib/libbtnv.so
+vendor/lib/libbtnv.so
vendor/lib/libc2d30_bltlib.so
vendor/lib/libcamxfdalgov7.so
vendor/lib/libcamxfdengine.so
@@ -430,7 +411,6 @@ vendor/lib/libdisp-aba.so
vendor/lib/libdisplayqos.so
vendor/lib/libdrmfs.so
vendor/lib/libdrmtime.so
-vendor/lib/libdsd2pcm.so
vendor/lib/libeaselmanager_client.so
vendor/lib/libelmyra-protos.so
vendor/lib/libfastcrc.so
@@ -471,10 +451,7 @@ vendor/lib/libqisl.so
vendor/lib/libqseed3.so
vendor/lib/libqti-utils.so
vendor/lib/libqtikeymaster4.so
-vendor/lib/libquipc_os_api.so
vendor/lib/librpmb.so
-vendor/lib/librs_adreno.so
-vendor/lib/librs_adreno_sha1.so
vendor/lib/libsdedrm.so
vendor/lib/libsdm-color.so
vendor/lib/libsdm-diag.so
@@ -536,7 +513,7 @@ vendor/lib/vendor.qti.hardware.qteeconnector@1.0.so
vendor/lib/vendor.qti.hardware.scve.objecttracker@1.0.so
vendor/lib/vendor.qti.hardware.scve.panorama@1.0.so
vendor/lib/vendor.qti.hardware.soter@1.0.so
-vendor/lib/vendor.qti.hardware.tui_comm@1.0.so
+vendor/lib/vendor.qti.hardware.tui_comm@1.0.so;MODULE_SUFFIX=_vendor
vendor/lib/vendor.qti.hardware.wigig.netperftuner@1.0.so
vendor/lib/vendor.qti.power.pasrmanager@1.0.so
vendor/lib/vendor.qti.voiceprint@1.0.so
@@ -604,11 +581,11 @@ vendor/lib64/camera/fdconfigvideo.bin
vendor/lib64/camera/fdconfigvideolite.bin
vendor/lib64/com.fingerprints.extension@1.0.so
vendor/lib64/egl/eglSubDriverAndroid.so
-vendor/lib64/egl/libEGL_adreno.so;SYMLINK=vendor/lib/libEGL_adreno.so
+vendor/lib64/egl/libEGL_adreno.so;SYMLINK=vendor/lib64/libEGL_adreno.so
vendor/lib64/egl/libGLESv1_CM_adreno.so
-vendor/lib64/egl/libGLESv2_adreno.so;SYMLINK=vendor/lib/libGLESv2_adreno.so
+vendor/lib64/egl/libGLESv2_adreno.so;SYMLINK=vendor/lib64/libGLESv2_adreno.so
vendor/lib64/egl/libQTapGLES.so
-vendor/lib64/egl/libq3dtools_adreno.so;SYMLINK=vendor/lib/libq3dtools_adreno.so
+vendor/lib64/egl/libq3dtools_adreno.so;SYMLINK=vendor/lib64/libq3dtools_adreno.so
vendor/lib64/egl/libq3dtools_esx.so
vendor/lib64/hw/android.hardware.bluetooth@1.0-impl-qti.so
vendor/lib64/hw/android.hardware.gatekeeper@1.0-impl-qti.so
@@ -617,27 +594,16 @@ vendor/lib64/hw/com.qti.chi.override.so
vendor/lib64/hw/sound_trigger.primary.sdm710.so
vendor/lib64/hw/vendor.qti.hardware.qteeconnector@1.0-impl.so
vendor/lib64/hw/vulkan.adreno.so
-vendor/lib64/lib-dplmedia.so
-vendor/lib64/libAlacSwDec.so
-vendor/lib64/libApeSwDec.so
vendor/lib64/libC2D2.so
vendor/lib64/libCB.so
-vendor/lib64/libFlacSwDec.so
vendor/lib64/libGPQTEEC_vendor.so
vendor/lib64/libGPTEE_vendor.so
vendor/lib64/libGPreqcancel.so
vendor/lib64/libGPreqcancel_svc.so
--vendor/lib64/libMpeg4SwEncoder.so
-vendor/lib64/libOmxAlacDecSw.so
-vendor/lib64/libOmxAmrwbplusDec.so
-vendor/lib64/libOmxApeDecSw.so
-vendor/lib64/libOmxEvrcDec.so
-vendor/lib64/libOmxQcelp13Dec.so
vendor/lib64/libOpenCL-pixel.so
vendor/lib64/libOpenCL.so
vendor/lib64/libQSEEComAPI.so
vendor/lib64/libQTEEConnector_vendor.so
-vendor/lib64/libRSDriver_adreno.so
vendor/lib64/libSecureUILib.so
vendor/lib64/libStDrvInt.so
vendor/lib64/libSubSystemShutdown.so
@@ -649,14 +615,14 @@ vendor/lib64/libacdbrtac.so
vendor/lib64/libadiertac.so
vendor/lib64/libadreno_utils.so
vendor/lib64/libadsp_default_listener.so
--vendor/lib64/libadsprpc.so
+vendor/lib64/libadsprpc.so
vendor/lib64/libash.so
vendor/lib64/libaudcal.so
vendor/lib64/libaudioalsa.so
vendor/lib64/libbase64.so
vendor/lib64/libbccQTI.so
vendor/lib64/libbluetooth_audio_session_qti.so
--vendor/lib64/libbtnv.so
+vendor/lib64/libbtnv.so
vendor/lib64/libc2d30_bltlib.so
vendor/lib64/libcamxfdalgov7.so
vendor/lib64/libcamxfdengine.so
@@ -716,7 +682,6 @@ vendor/lib64/libnos_transport.so
vendor/lib64/libnosprotos.so
vendor/lib64/liboemcrypto.so
vendor/lib64/libperipheral_client.so
-vendor/lib64/libpixelstats.so
vendor/lib64/libpower_anomaly_data.so
vendor/lib64/libqcbor.so
vendor/lib64/libqcodec2.so
@@ -724,10 +689,7 @@ vendor/lib64/libqisl.so
vendor/lib64/libqseed3.so
vendor/lib64/libqti-utils.so
vendor/lib64/libqtikeymaster4.so
-vendor/lib64/libquipc_os_api.so
vendor/lib64/librpmb.so
-vendor/lib64/librs_adreno.so
-vendor/lib64/librs_adreno_sha1.so
vendor/lib64/libsdedrm.so
vendor/lib64/libsdm-color.so
vendor/lib64/libsdm-diag.so
@@ -762,7 +724,7 @@ vendor/lib64/nos_app_avb.so
vendor/lib64/nos_app_identity.so
vendor/lib64/nos_app_keymaster.so
vendor/lib64/nos_app_weaver.so
-vendor/lib64/pixelatoms-cpp.so
+vendor/lib64/pixelatoms-cpp.so:vendor/lib64/pixelatoms-cpp-legacy.so;FIX_SONAME
vendor/lib64/sensors.ssc.so
vendor/lib64/unnhal-acc-adreno.so
vendor/lib64/unnhal-acc-common.so
@@ -781,7 +743,7 @@ vendor/lib64/vendor.qti.hardware.qteeconnector@1.0.so
vendor/lib64/vendor.qti.hardware.scve.objecttracker@1.0.so
vendor/lib64/vendor.qti.hardware.scve.panorama@1.0.so
vendor/lib64/vendor.qti.hardware.soter@1.0.so
-vendor/lib64/vendor.qti.hardware.tui_comm@1.0.so
+vendor/lib64/vendor.qti.hardware.tui_comm@1.0.so;MODULE_SUFFIX=_vendor
vendor/lib64/vendor.qti.hardware.wigig.netperftuner@1.0.so
vendor/lib64/vendor.qti.power.pasrmanager@1.0.so
vendor/lib64/vendor.qti.voiceprint@1.0.so
diff --git a/bonito/proprietary-files.txt b/bonito/proprietary-files.txt
index 132133d1..91e8b0c2 100644
--- a/bonito/proprietary-files.txt
+++ b/bonito/proprietary-files.txt
@@ -114,12 +114,3 @@ system_ext/etc/permissions/vzw_mvs_permissions.xml
system_ext/priv-app/MyVerizonServices/MyVerizonServices.apk;PRESIGNED
system_ext/priv-app/OBDM_Permissions/OBDM_Permissions.apk;PRESIGNED
system_ext/priv-app/obdm_stub/obdm_stub.apk;PRESIGNED
-
-# vendor partition
-
-# Wi-Fi service
-vendor/bin/hw/vendor.google.wifi_ext-service-vendor|2f00a17b75612cbf8fb3685fe0d183148a70dd03
-vendor/etc/init/vendor.google.wifi_ext-service.rc|8565ca57da131819441d6fb87abfcae134ed2ef9
-vendor/etc/vintf/manifest/manifest_wifi_ext_aidl.xml|f273a6ab68268f73935c36bdecea0aad97cbe70f
-vendor/lib64/google_wifi_firmware_config_info_cc_proto.so|b290b5ba92c6b505d2314e75d8c7269a1cc03942
-vendor/lib64/vendor.google.wifi_ext-V3-ndk.so|9fcddf2e1eab7978f6c57270170b3f4a9aea04b8
diff --git a/bonito/regen-carriersettings.sh b/bonito/regen-carriersettings.sh
deleted file mode 100755
index df7335bc..00000000
--- a/bonito/regen-carriersettings.sh
+++ /dev/null
@@ -1,47 +0,0 @@
-#!/bin/bash
-#
-# Copyright (C) 2019-2023 The LineageOS Project
-#
-# SPDX-License-Identifier: Apache-2.0
-#
-
-set -e
-
-# Load extract_utils and do some sanity checks
-MY_DIR="${BASH_SOURCE%/*}"
-if [[ ! -d "${MY_DIR}" ]]; then MY_DIR="${PWD}"; fi
-
-ANDROID_ROOT="${MY_DIR}/../../../.."
-
-HELPER="${ANDROID_ROOT}/tools/extract-utils/extract_utils.sh"
-if [ ! -f "${HELPER}" ]; then
- echo "Unable to find helper script at ${HELPER}"
- exit 1
-fi
-source "${HELPER}"
-
-_input_image="${1}"
-_output_file="${2}"
-
-if [ -z "${_input_image}" ]; then
- echo "No input image supplied"
- exit 1
-fi
-
-if [ -z "${_output_file}" ]; then
- echo "No output filename supplied"
- exit 1
-fi
-
-CARRIER_SKIP_FILES=()
-
-# Initialize the helper
-setup_vendor_deps "${ANDROID_ROOT}"
-
-generate_prop_list_from_image "${_input_image}" "${_output_file}" CARRIER_SKIP_FILES carriersettings
-
-function header() {
- sed -i "1s/^/${1}\n/" "${_output_file}"
-}
-
-header "# All blobs are extracted from Google factory images for each new ASB"
diff --git a/bonito/regen-vendor.sh b/bonito/regen-vendor.sh
deleted file mode 100755
index 48258c37..00000000
--- a/bonito/regen-vendor.sh
+++ /dev/null
@@ -1,1395 +0,0 @@
-#!/bin/bash
-#
-# Copyright (C) 2019-2021 The LineageOS Project
-#
-# SPDX-License-Identifier: Apache-2.0
-#
-
-set -e
-
-# Load extract_utils and do some sanity checks
-MY_DIR="${BASH_SOURCE%/*}"
-if [[ ! -d "${MY_DIR}" ]]; then MY_DIR="${PWD}"; fi
-
-ANDROID_ROOT="${MY_DIR}/../../../.."
-
-HELPER="${ANDROID_ROOT}/tools/extract-utils/extract_utils.sh"
-if [ ! -f "${HELPER}" ]; then
- echo "Unable to find helper script at ${HELPER}"
- exit 1
-fi
-source "${HELPER}"
-
-_input_image="${1}"
-_output_file="${2}"
-
-if [ -z "${_input_image}" ]; then
- echo "No input image supplied"
- exit 1
-fi
-
-if [ -z "${_output_file}" ]; then
- echo "No output filename supplied"
- exit 1
-fi
-
-VENDOR_SKIP_FILES=(
- # Standard build output with vendor image build enabled
- "apex/com.android.vibrator.drv2624.apex"
- "bin/["
- "bin/acpi"
- "bin/applypatch"
- "bin/awk"
- "bin/base64"
- "bin/basename"
- "bin/blockdev"
- "bin/boringssl_self_test32"
- "bin/boringssl_self_test64"
- "bin/cal"
- "bin/cat"
- "bin/chattr"
- "bin/chcon"
- "bin/checkpoint_gc"
- "bin/chgrp"
- "bin/chmod"
- "bin/chown"
- "bin/chroot"
- "bin/chrt"
- "bin/cksum"
- "bin/clear"
- "bin/cmp"
- "bin/comm"
- "bin/cp"
- "bin/cpio"
- "bin/cut"
- "bin/date"
- "bin/dd"
- "bin/devmem"
- "bin/df"
- "bin/diff"
- "bin/dirname"
- "bin/dmesg"
- "bin/dos2unix"
- "bin/du"
- "bin/dumpsys"
- "bin/echo"
- "bin/egrep"
- "bin/env"
- "bin/expand"
- "bin/expr"
- "bin/fallocate"
- "bin/false"
- "bin/fgrep"
- "bin/file"
- "bin/find"
- "bin/flock"
- "bin/fmt"
- "bin/free"
- "bin/fsync"
- "bin/getconf"
- "bin/getenforce"
- "bin/getevent"
- "bin/getprop"
- "bin/grep"
- "bin/groups"
- "bin/gunzip"
- "bin/gzip"
- "bin/head"
- "bin/hostname"
- "bin/hw/android.hardware.atrace@1.0-service.pixel"
- "bin/hw/android.hardware.audio.service"
- "bin/hw/android.hardware.boot@1.0-service"
- "bin/hw/android.hardware.camera.provider@2.4-service_64"
- "bin/hw/android.hardware.cas@1.2-service"
- "bin/hw/android.hardware.configstore@1.1-service"
- "bin/hw/android.hardware.contexthub@1.2-service.generic"
- "bin/hw/android.hardware.drm@1.0-service"
- "bin/hw/android.hardware.drm@1.4-service.clearkey"
- "bin/hw/android.hardware.dumpstate@1.1-service.bonito"
- "bin/hw/android.hardware.gnss@1.1-service-qti"
- "bin/hw/android.hardware.graphics.composer@2.2-service"
- "bin/hw/android.hardware.health.storage@1.0-service"
- "bin/hw/android.hardware.health@2.0-service.bonito"
- "bin/hw/android.hardware.light@2.0-service"
- "bin/hw/android.hardware.media.omx@1.0-service"
- "bin/hw/android.hardware.memtrack@1.0-service"
- "bin/hw/android.hardware.nfc@1.2-service"
- "bin/hw/android.hardware.power-service.pixel-libperfmgr"
- "bin/hw/android.hardware.power.stats@1.0-service.pixel"
- "bin/hw/android.hardware.secure_element@1.1-service-disabled"
- "bin/hw/android.hardware.thermal@2.0-service.pixel"
- "bin/hw/android.hardware.usb@1.3-service.bonito"
- "bin/hw/android.hardware.wifi@1.0-service"
- "bin/hw/hostapd"
- "bin/hw/wait_for_strongbox"
- "bin/hw/wpa_supplicant"
- "bin/hwclock"
- "bin/i2cdetect"
- "bin/i2cdump"
- "bin/i2cget"
- "bin/i2cset"
- "bin/iconv"
- "bin/id"
- "bin/ifconfig"
- "bin/init.edge_sense.sh"
- "bin/init.fingerprint.sh"
- "bin/init.firstboot.sh"
- "bin/init.insmod.sh"
- "bin/init.qcom.devstart.sh"
- "bin/init.qcom.ipastart.sh"
- "bin/init.qcom.wlan.sh"
- "bin/init.radio.sh"
- "bin/init.ramoops.sh"
- "bin/inotifyd"
- "bin/insmod"
- "bin/install"
- "bin/ionice"
- "bin/iorenice"
- "bin/ipacm"
- "bin/kill"
- "bin/killall"
- "bin/ln"
- "bin/load_policy"
- "bin/log"
- "bin/logname"
- "bin/logwrapper"
- "bin/losetup"
- "bin/ls"
- "bin/lsattr"
- "bin/lsmod"
- "bin/lsof"
- "bin/lspci"
- "bin/lsusb"
- "bin/md5sum"
- "bin/microcom"
- "bin/misc_writer"
- "bin/mkdir"
- "bin/mkfifo"
- "bin/mknod"
- "bin/mkswap"
- "bin/mktemp"
- "bin/modinfo"
- "bin/modprobe"
- "bin/more"
- "bin/mount"
- "bin/mountpoint"
- "bin/mv"
- "bin/nc"
- "bin/netcat"
- "bin/netstat"
- "bin/nice"
- "bin/nl"
- "bin/nohup"
- "bin/nproc"
- "bin/nsenter"
- "bin/od"
- "bin/paste"
- "bin/patch"
- "bin/pgrep"
- "bin/pidof"
- "bin/pixelstats-vendor"
- "bin/pkill"
- "bin/pmap"
- "bin/printenv"
- "bin/printf"
- "bin/ps"
- "bin/pwd"
- "bin/readelf"
- "bin/readlink"
- "bin/realpath"
- "bin/renice"
- "bin/restorecon"
- "bin/rm"
- "bin/rmdir"
- "bin/rmmod"
- "bin/rtcwake"
- "bin/runcon"
- "bin/sed"
- "bin/sendevent"
- "bin/seq"
- "bin/setenforce"
- "bin/setprop"
- "bin/setsid"
- "bin/sh"
- "bin/sha1sum"
- "bin/sha224sum"
- "bin/sha256sum"
- "bin/sha384sum"
- "bin/sha512sum"
- "bin/sleep"
- "bin/sort"
- "bin/split"
- "bin/start"
- "bin/stat"
- "bin/stop"
- "bin/strings"
- "bin/stty"
- "bin/swapoff"
- "bin/swapon"
- "bin/sync"
- "bin/sysctl"
- "bin/tac"
- "bin/tail"
- "bin/tar"
- "bin/taskset"
- "bin/tee"
- "bin/test"
- "bin/thermal_symlinks"
- "bin/time"
- "bin/timeout"
- "bin/toolbox"
- "bin/top"
- "bin/touch"
- "bin/toybox_vendor"
- "bin/tr"
- "bin/true"
- "bin/truncate"
- "bin/tty"
- "bin/ulimit"
- "bin/umount"
- "bin/uname"
- "bin/uniq"
- "bin/unix2dos"
- "bin/unlink"
- "bin/unshare"
- "bin/uptime"
- "bin/usleep"
- "bin/uudecode"
- "bin/uuencode"
- "bin/uuidgen"
- "bin/vmstat"
- "bin/vndservice"
- "bin/vndservicemanager"
- "bin/watch"
- "bin/wc"
- "bin/which"
- "bin/whoami"
- "bin/xargs"
- "bin/xxd"
- "bin/yes"
- "bin/zcat"
- "build.prop"
- "etc/IPACM_cfg.xml"
- "etc/NOTICE.xml.gz"
- "etc/a2dp_audio_policy_configuration_7_0.xml"
- "etc/a2dp_in_audio_policy_configuration_7_0.xml"
- "etc/acdbdata/OEM/sdm670-intcodec-b4-snd-card/Bluetooth_cal.acdb"
- "etc/acdbdata/OEM/sdm670-intcodec-b4-snd-card/General_cal.acdb"
- "etc/acdbdata/OEM/sdm670-intcodec-b4-snd-card/Global_cal.acdb"
- "etc/acdbdata/OEM/sdm670-intcodec-b4-snd-card/Handset_cal.acdb"
- "etc/acdbdata/OEM/sdm670-intcodec-b4-snd-card/Hdmi_cal.acdb"
- "etc/acdbdata/OEM/sdm670-intcodec-b4-snd-card/Headset_cal.acdb"
- "etc/acdbdata/OEM/sdm670-intcodec-b4-snd-card/Speaker_cal.acdb"
- "etc/acdbdata/OEM/sdm670-intcodec-b4dev-snd-card/Bluetooth_cal.acdb"
- "etc/acdbdata/OEM/sdm670-intcodec-b4dev-snd-card/General_cal.acdb"
- "etc/acdbdata/OEM/sdm670-intcodec-b4dev-snd-card/Global_cal.acdb"
- "etc/acdbdata/OEM/sdm670-intcodec-b4dev-snd-card/Handset_cal.acdb"
- "etc/acdbdata/OEM/sdm670-intcodec-b4dev-snd-card/Hdmi_cal.acdb"
- "etc/acdbdata/OEM/sdm670-intcodec-b4dev-snd-card/Headset_cal.acdb"
- "etc/acdbdata/OEM/sdm670-intcodec-b4dev-snd-card/Speaker_cal.acdb"
- "etc/acdbdata/OEM/sdm670-intcodec-s4-snd-card/Bluetooth_cal.acdb"
- "etc/acdbdata/OEM/sdm670-intcodec-s4-snd-card/General_cal.acdb"
- "etc/acdbdata/OEM/sdm670-intcodec-s4-snd-card/Global_cal.acdb"
- "etc/acdbdata/OEM/sdm670-intcodec-s4-snd-card/Handset_cal.acdb"
- "etc/acdbdata/OEM/sdm670-intcodec-s4-snd-card/Hdmi_cal.acdb"
- "etc/acdbdata/OEM/sdm670-intcodec-s4-snd-card/Headset_cal.acdb"
- "etc/acdbdata/OEM/sdm670-intcodec-s4-snd-card/Speaker_cal.acdb"
- "etc/acdbdata/OEM/sdm670-intcodec-s4dev-snd-card/Bluetooth_cal.acdb"
- "etc/acdbdata/OEM/sdm670-intcodec-s4dev-snd-card/General_cal.acdb"
- "etc/acdbdata/OEM/sdm670-intcodec-s4dev-snd-card/Global_cal.acdb"
- "etc/acdbdata/OEM/sdm670-intcodec-s4dev-snd-card/Handset_cal.acdb"
- "etc/acdbdata/OEM/sdm670-intcodec-s4dev-snd-card/Hdmi_cal.acdb"
- "etc/acdbdata/OEM/sdm670-intcodec-s4dev-snd-card/Headset_cal.acdb"
- "etc/acdbdata/OEM/sdm670-intcodec-s4dev-snd-card/Speaker_cal.acdb"
- "etc/acdbdata/adsp_avs_config.acdb"
- "etc/audio_effects.xml"
- "etc/audio_platform_info_intcodec_b4.xml"
- "etc/audio_platform_info_intcodec_b4dev.xml"
- "etc/audio_platform_info_intcodec_s4.xml"
- "etc/audio_platform_info_intcodec_s4dev.xml"
- "etc/audio_policy_configuration.xml"
- "etc/audio_policy_configuration_a2dp_offload_disabled.xml"
- "etc/audio_policy_configuration_bluetooth_legacy_hal.xml"
- "etc/audio_policy_volumes.xml"
- "etc/bluetooth_audio_policy_configuration_7_0.xml"
- "etc/bluetooth_hearing_aid_audio_policy_configuration.xml"
- "etc/default-permissions/default-permissions.xml"
- "etc/default_volume_tables.xml"
- "etc/fs_config_dirs"
- "etc/fs_config_files"
- "etc/fstab.sdm670"
- "etc/gps.conf"
- "etc/graphite_ipc_platform_info.xml"
- "etc/group"
- "etc/hearing_aid_audio_policy_configuration_7_0.xml"
- "etc/init.insmod.cfg"
- "etc/init/android.hardware.atrace@1.0-service.pixel.rc"
- "etc/init/android.hardware.audio.service.rc"
- "etc/init/android.hardware.boot@1.0-service.rc"
- "etc/init/android.hardware.camera.provider@2.4-service_64.rc"
- "etc/init/android.hardware.cas@1.2-service.rc"
- "etc/init/android.hardware.configstore@1.1-service.rc"
- "etc/init/android.hardware.contexthub@1.2-service-generic.rc"
- "etc/init/android.hardware.drm@1.0-service.rc"
- "etc/init/android.hardware.drm@1.4-service.clearkey.rc"
- "etc/init/android.hardware.dumpstate@1.1-service.bonito.rc"
- "etc/init/android.hardware.gnss@1.1-service-qti.rc"
- "etc/init/android.hardware.graphics.composer@2.2-service.rc"
- "etc/init/android.hardware.health.storage@1.0-service.rc"
- "etc/init/android.hardware.health@2.0-service.bonito.rc"
- "etc/init/android.hardware.light@2.0-service.rc"
- "etc/init/android.hardware.media.omx@1.0-service.rc"
- "etc/init/android.hardware.memtrack@1.0-service.rc"
- "etc/init/android.hardware.nfc@1.2-service.rc"
- "etc/init/android.hardware.power-service.pixel-libperfmgr.rc"
- "etc/init/android.hardware.power.stats@1.0-service.pixel.rc"
- "etc/init/android.hardware.secure_element@1.1-service-disabled.rc"
- "etc/init/android.hardware.thermal@2.0-service.pixel.rc"
- "etc/init/android.hardware.usb@1.3-service.bonito.rc"
- "etc/init/android.hardware.wifi.supplicant-service.rc"
- "etc/init/android.hardware.wifi@1.0-service.rc"
- "etc/init/boringssl_self_test.rc"
- "etc/init/com.android.vibrator.drv2624.enable.rc"
- "etc/init/hostapd.android.rc"
- "etc/init/hw/init.bonito.rc"
- "etc/init/hw/init.sargo.rc"
- "etc/init/hw/init.sdm670.diag.rc"
- "etc/init/hw/init.sdm670.logging.rc"
- "etc/init/hw/init.sdm670.mpssrfs.rc"
- "etc/init/hw/init.sdm670.power.rc"
- "etc/init/hw/init.sdm670.rc"
- "etc/init/hw/init.sdm670.usb.rc"
- "etc/init/pixel-mm-legacy.rc"
- "etc/init/pixel-thermal-symlinks.rc"
- "etc/init/pixelstats-vendor.bonito.rc"
- "etc/init/vendor_flash_recovery.rc"
- "etc/init/vndservicemanager.rc"
- "etc/libese-nxp.conf"
- "etc/libnfc-nxp-G020A.conf"
- "etc/libnfc-nxp-G020B.conf"
- "etc/libnfc-nxp-G020C.conf"
- "etc/libnfc-nxp-G020D.conf"
- "etc/libnfc-nxp.conf"
- "etc/lowi.conf"
- "etc/media_codecs.xml"
- "etc/media_codecs_google_telephony.xml"
- "etc/media_codecs_google_video.xml"
- "etc/media_codecs_omx.xml"
- "etc/media_codecs_performance.xml"
- "etc/media_profiles_V1_0.xml"
- "etc/mixer_paths_intcodec_b4.xml"
- "etc/mixer_paths_intcodec_b4dev.xml"
- "etc/mixer_paths_intcodec_s4.xml"
- "etc/mixer_paths_intcodec_s4dev.xml"
- "etc/mkshrc"
- "etc/passwd"
- "etc/permissions/android.hardware.audio.low_latency.xml"
- "etc/permissions/android.hardware.audio.pro.xml"
- "etc/permissions/android.hardware.bluetooth.xml"
- "etc/permissions/android.hardware.bluetooth_le.xml"
- "etc/permissions/android.hardware.camera.flash-autofocus.xml"
- "etc/permissions/android.hardware.camera.front.xml"
- "etc/permissions/android.hardware.camera.full.xml"
- "etc/permissions/android.hardware.camera.raw.xml"
- "etc/permissions/android.hardware.context_hub.xml"
- "etc/permissions/android.hardware.device_unique_attestation.xml"
- "etc/permissions/android.hardware.fingerprint.xml"
- "etc/permissions/android.hardware.location.gps.xml"
- "etc/permissions/android.hardware.nfc.hce.xml"
- "etc/permissions/android.hardware.nfc.hcef.xml"
- "etc/permissions/android.hardware.nfc.xml"
- "etc/permissions/android.hardware.opengles.aep.xml"
- "etc/permissions/android.hardware.reboot_escrow.xml"
- "etc/permissions/android.hardware.se.omapi.uicc.xml"
- "etc/permissions/android.hardware.sensor.accelerometer.xml"
- "etc/permissions/android.hardware.sensor.assist.xml"
- "etc/permissions/android.hardware.sensor.barometer.xml"
- "etc/permissions/android.hardware.sensor.compass.xml"
- "etc/permissions/android.hardware.sensor.gyroscope.xml"
- "etc/permissions/android.hardware.sensor.hifi_sensors.xml"
- "etc/permissions/android.hardware.sensor.light.xml"
- "etc/permissions/android.hardware.sensor.proximity.xml"
- "etc/permissions/android.hardware.sensor.stepcounter.xml"
- "etc/permissions/android.hardware.sensor.stepdetector.xml"
- "etc/permissions/android.hardware.strongbox_keystore.xml"
- "etc/permissions/android.hardware.telephony.carrierlock.xml"
- "etc/permissions/android.hardware.telephony.cdma.xml"
- "etc/permissions/android.hardware.telephony.gsm.xml"
- "etc/permissions/android.hardware.telephony.ims.xml"
- "etc/permissions/android.hardware.touchscreen.multitouch.jazzhand.xml"
- "etc/permissions/android.hardware.usb.accessory.xml"
- "etc/permissions/android.hardware.usb.host.xml"
- "etc/permissions/android.hardware.vulkan.compute.xml"
- "etc/permissions/android.hardware.vulkan.level.xml"
- "etc/permissions/android.hardware.vulkan.version.xml"
- "etc/permissions/android.hardware.wifi.aware.xml"
- "etc/permissions/android.hardware.wifi.direct.xml"
- "etc/permissions/android.hardware.wifi.passpoint.xml"
- "etc/permissions/android.hardware.wifi.rtt.xml"
- "etc/permissions/android.hardware.wifi.xml"
- "etc/permissions/android.software.device_id_attestation.xml"
- "etc/permissions/android.software.ipsec_tunnels.xml"
- "etc/permissions/android.software.midi.xml"
- "etc/permissions/android.software.opengles.deqp.level.xml"
- "etc/permissions/android.software.sip.voip.xml"
- "etc/permissions/android.software.verified_boot.xml"
- "etc/permissions/android.software.vulkan.deqp.level.xml"
- "etc/permissions/com.google.hardware.camera.easel_2018.xml"
- "etc/permissions/com.nxp.mifare.xml"
- "etc/permissions/handheld_core_hardware.xml"
- "etc/powerhint.json"
- "etc/r_submix_audio_policy_configuration.xml"
- "etc/sec_config"
- "etc/seccomp_policy/configstore@1.1.policy"
- "etc/seccomp_policy/mediacodec.policy"
- "etc/selinux/plat_pub_versioned.cil"
- "etc/selinux/plat_sepolicy_vers.txt"
- "etc/selinux/precompiled_sepolicy"
- "etc/selinux/precompiled_sepolicy.plat_sepolicy_and_mapping.sha256"
- "etc/selinux/precompiled_sepolicy.product_sepolicy_and_mapping.sha256"
- "etc/selinux/selinux_denial_metadata"
- "etc/selinux/vendor_file_contexts"
- "etc/selinux/vendor_hwservice_contexts"
- "etc/selinux/vendor_mac_permissions.xml"
- "etc/selinux/vendor_property_contexts"
- "etc/selinux/vendor_seapp_contexts"
- "etc/selinux/vendor_sepolicy.cil"
- "etc/selinux/vendor_service_contexts"
- "etc/selinux/vndservice_contexts"
- "etc/sensors/hals.conf"
- "etc/sound_trigger_mixer_paths.xml"
- "etc/sound_trigger_platform_info.xml"
- "etc/sysconfig/component-overrides.xml"
- "etc/thermal-engine-bonito.conf"
- "etc/thermal_info_config.json"
- "etc/usb_audio_policy_configuration.xml"
- "etc/vintf/compatibility_matrix.xml"
- "etc/vintf/manifest.xml"
- "etc/vintf/manifest/android.hardware.atrace@1.0-service.pixel.xml"
- "etc/vintf/manifest/android.hardware.cas@1.2-service.xml"
- "etc/vintf/manifest/android.hardware.contexthub@1.2-generic.xml"
- "etc/vintf/manifest/android.hardware.power-service.pixel.xml"
- "etc/vintf/manifest/android.hardware.thermal@2.0-service.pixel.xml"
- "etc/vintf/manifest/android.hardware.usb.gadget@1.1-service.bonito.xml"
- "etc/vintf/manifest/android.hardware.usb@1.3-service.bonito.xml"
- "etc/vintf/manifest/android.hardware.wifi.hostapd.xml"
- "etc/vintf/manifest/android.hardware.wifi.supplicant.xml"
- "etc/vintf/manifest/android.hardware.wifi@1.0-service.xml"
- "etc/vintf/manifest/com.android.vibrator.drv2624.xml"
- "etc/vintf/manifest/manifest_android.hardware.drm@1.4-service.clearkey.xml"
- "etc/vintf/manifest/manifest_android.hardware.health.storage@1.0.xml"
- "etc/wifi/p2p_supplicant_overlay.conf"
- "etc/wifi/wifi_concurrency_cfg.txt"
- "etc/wifi/wpa_supplicant.conf"
- "etc/wifi/wpa_supplicant_overlay.conf"
- "firmware/crus_sp_config_b4_rx.bin"
- "firmware/crus_sp_config_b4_tx.bin"
- "firmware/crus_sp_config_s4_rx.bin"
- "firmware/crus_sp_config_s4_tx.bin"
- "firmware/cs40l20.bin"
- "firmware/cs40l20.wmfw"
- "firmware/drv2624.bin"
- "firmware/rt5514_dsp_fw1.bin"
- "firmware/rt5514_dsp_fw2.bin"
- "firmware/rt5514_dsp_fw3.bin"
- "firmware/rt5514_dsp_fw4.bin"
- "firmware/wlan/qca_cld/WCNSS_qcom_cfg.ini"
- "lib/android.hardware.audio.common-util.so"
- "lib/android.hardware.audio.common@5.0.so"
- "lib/android.hardware.audio.common@7.0-enums.so"
- "lib/android.hardware.audio.common@7.0-util.so"
- "lib/android.hardware.audio.common@7.0.so"
- "lib/android.hardware.audio.effect@7.0-util.so"
- "lib/android.hardware.audio.effect@7.0.so"
- "lib/android.hardware.audio@7.0-util.so"
- "lib/android.hardware.audio@7.0.so"
- "lib/android.hardware.bluetooth.audio@2.0.so"
- "lib/android.hardware.bluetooth.audio@2.1.so"
- "lib/android.hardware.boot@1.0.so"
- "lib/android.hardware.camera.common@1.0.so"
- "lib/android.hardware.camera.device@1.0.so"
- "lib/android.hardware.camera.device@3.2.so"
- "lib/android.hardware.camera.device@3.3.so"
- "lib/android.hardware.camera.device@3.4.so"
- "lib/android.hardware.camera.device@3.5.so"
- "lib/android.hardware.camera.device@3.6.so"
- "lib/android.hardware.camera.provider@2.4-external.so"
- "lib/android.hardware.camera.provider@2.4-legacy.so"
- "lib/android.hardware.camera.provider@2.4.so"
- "lib/android.hardware.cas.native@1.0.so"
- "lib/android.hardware.cas@1.0.so"
- "lib/android.hardware.cas@1.1.so"
- "lib/android.hardware.cas@1.2.so"
- "lib/android.hardware.drm@1.0.so"
- "lib/android.hardware.gnss@1.0.so"
- "lib/android.hardware.gnss@1.1.so"
- "lib/android.hardware.light@2.0.so"
- "lib/android.hardware.power-V1-ndk_platform.so"
- "lib/android.hardware.power@1.0.so"
- "lib/android.hardware.power@1.1.so"
- "lib/android.hardware.power@1.2.so"
- "lib/android.hardware.radio@1.0.so"
- "lib/android.hardware.radio@1.1.so"
- "lib/android.hardware.soundtrigger@2.1.so"
- "lib/android.hardware.soundtrigger@2.2.so"
- "lib/android.hidl.allocator@1.0.so"
- "lib/camera.device@1.0-impl.so"
- "lib/camera.device@3.2-impl.so"
- "lib/camera.device@3.3-impl.so"
- "lib/camera.device@3.4-external-impl.so"
- "lib/camera.device@3.4-impl.so"
- "lib/camera.device@3.5-external-impl.so"
- "lib/camera.device@3.5-impl.so"
- "lib/camera.device@3.6-external-impl.so"
- "lib/hw/android.hardware.audio.effect@7.0-impl.so"
- "lib/hw/android.hardware.audio@7.0-impl.so"
- "lib/hw/android.hardware.bluetooth.audio@2.0-impl.so"
- "lib/hw/android.hardware.boot@1.0-impl.so"
- "lib/hw/android.hardware.camera.provider@2.4-impl.so"
- "lib/hw/android.hardware.drm@1.0-impl.so"
- "lib/hw/android.hardware.gnss@1.1-impl-qti.so"
- "lib/hw/android.hardware.light@2.0-impl.so"
- "lib/hw/android.hardware.memtrack@1.0-impl.so"
- "lib/hw/android.hardware.renderscript@1.0-impl.so"
- "lib/hw/android.hardware.soundtrigger@2.2-impl.so"
- "lib/hw/audio.bluetooth.default.so"
- "lib/hw/audio.primary.default.so"
- "lib/hw/audio.primary.sdm710.so"
- "lib/hw/audio.r_submix.default.so"
- "lib/hw/audio.usb.default.so"
- "lib/hw/bootctrl.sdm710.so"
- "lib/hw/gralloc.default.so"
- "lib/hw/local_time.default.so"
- "lib/hw/power.default.so"
- "lib/hw/sensors.bonito.so"
- "lib/hw/vibrator.default.so"
- "lib/libalsautils.so"
- "lib/libavservices_minijail.so"
- "lib/libbluetooth_audio_session.so"
- "lib/libeffects.so"
- "lib/libeffectsconfig.so"
- "lib/libgnss.so"
- "lib/libgps.utils.so"
- "lib/libloc_core.so"
- "lib/liblocation_api.so"
- "lib/libmediautils_vendor.so"
- "lib/libmemunreachable.so"
- "lib/libnbaio_mono.so"
- "lib/libopus.so"
- "lib/libprotobuf-cpp-full-3.9.1.so"
- "lib/libprotobuf-cpp-lite-3.9.1.so"
- "lib/libreference-ril.so"
- "lib/libril.so"
- "lib/librilutils.so"
- "lib/libstagefright_amrnb_common.so"
- "lib/libstagefright_enc_common.so"
- "lib/libstagefright_flacdec.so"
- "lib/libstagefright_soft_aacdec.so"
- "lib/libstagefright_soft_aacenc.so"
- "lib/libstagefright_soft_amrdec.so"
- "lib/libstagefright_soft_amrnbenc.so"
- "lib/libstagefright_soft_amrwbenc.so"
- "lib/libstagefright_soft_avcdec.so"
- "lib/libstagefright_soft_avcenc.so"
- "lib/libstagefright_soft_flacdec.so"
- "lib/libstagefright_soft_flacenc.so"
- "lib/libstagefright_soft_g711dec.so"
- "lib/libstagefright_soft_gsmdec.so"
- "lib/libstagefright_soft_hevcdec.so"
- "lib/libstagefright_soft_mp3dec.so"
- "lib/libstagefright_soft_mpeg2dec.so"
- "lib/libstagefright_soft_mpeg4dec.so"
- "lib/libstagefright_soft_mpeg4enc.so"
- "lib/libstagefright_soft_opusdec.so"
- "lib/libstagefright_soft_rawdec.so"
- "lib/libstagefright_soft_vorbisdec.so"
- "lib/libstagefright_soft_vpxdec.so"
- "lib/libstagefright_soft_vpxenc.so"
- "lib/libstagefright_softomx.so"
- "lib/libstagefright_softomx_plugin.so"
- "lib/libtinycompress.so"
- "lib/libvibrator.so"
- "lib/libvorbisidec.so"
- "lib/libvpx.so"
- "lib/libwpa_client.so"
- "lib/mediacas/libclearkeycasplugin.so"
- "lib/mediadrm/libdrmclearkeyplugin.so"
- "lib/modules/lcd.ko"
- "lib/modules/modules.alias"
- "lib/modules/modules.dep"
- "lib/modules/modules.load"
- "lib/modules/modules.softdep"
- "lib/modules/synaptics_dsx_core.ko"
- "lib/modules/synaptics_dsx_fw_update.ko"
- "lib/modules/synaptics_dsx_rmi_dev.ko"
- "lib/modules/synaptics_dsx_test_reporting.ko"
- "lib/modules/wlan.ko"
- "lib/soundfx/libaudiopreprocessing.so"
- "lib/soundfx/libbundlewrapper.so"
- "lib/soundfx/libdownmix.so"
- "lib/soundfx/libdynproc.so"
- "lib/soundfx/libeffectproxy.so"
- "lib/soundfx/libhapticgenerator.so"
- "lib/soundfx/libldnhncr.so"
- "lib/soundfx/libmalistener.so"
- "lib/soundfx/libqcompostprocbundle.so"
- "lib/soundfx/libqcomvisualizer.so"
- "lib/soundfx/libqcomvoiceprocessing.so"
- "lib/soundfx/libqcomvoiceprocessingdescriptors.so"
- "lib/soundfx/libreverbwrapper.so"
- "lib/soundfx/libvisualizer.so"
- "lib/soundfx/libvolumelistener.so"
- "lib64/android.frameworks.sensorservice@1.0.so"
- "lib64/android.frameworks.stats-V1-ndk_platform.so"
- "lib64/android.hardware.atrace@1.0.so"
- "lib64/android.hardware.audio.common@5.0.so"
- "lib64/android.hardware.bluetooth.audio@2.0.so"
- "lib64/android.hardware.bluetooth.audio@2.1.so"
- "lib64/android.hardware.boot@1.0.so"
- "lib64/android.hardware.camera.common@1.0.so"
- "lib64/android.hardware.camera.device@1.0.so"
- "lib64/android.hardware.camera.device@3.2.so"
- "lib64/android.hardware.camera.device@3.3.so"
- "lib64/android.hardware.camera.device@3.4.so"
- "lib64/android.hardware.camera.device@3.5.so"
- "lib64/android.hardware.camera.device@3.6.so"
- "lib64/android.hardware.camera.provider@2.4-external.so"
- "lib64/android.hardware.camera.provider@2.4-legacy.so"
- "lib64/android.hardware.camera.provider@2.4.so"
- "lib64/android.hardware.contexthub@1.0.so"
- "lib64/android.hardware.contexthub@1.1.so"
- "lib64/android.hardware.contexthub@1.2.so"
- "lib64/android.hardware.drm@1.0.so"
- "lib64/android.hardware.drm@1.1.so"
- "lib64/android.hardware.drm@1.2.so"
- "lib64/android.hardware.drm@1.3.so"
- "lib64/android.hardware.drm@1.4.so"
- "lib64/android.hardware.dumpstate@1.0.so"
- "lib64/android.hardware.dumpstate@1.1.so"
- "lib64/android.hardware.gnss@1.0.so"
- "lib64/android.hardware.gnss@1.1.so"
- "lib64/android.hardware.graphics.composer@2.1-resources.so"
- "lib64/android.hardware.graphics.composer@2.1.so"
- "lib64/android.hardware.graphics.composer@2.2-resources.so"
- "lib64/android.hardware.graphics.composer@2.2.so"
- "lib64/android.hardware.health.storage@1.0.so"
- "lib64/android.hardware.health@1.0.so"
- "lib64/android.hardware.health@2.0.so"
- "lib64/android.hardware.keymaster@3.0.so"
- "lib64/android.hardware.keymaster@4.0.so"
- "lib64/android.hardware.keymaster@4.1.so"
- "lib64/android.hardware.light@2.0.so"
- "lib64/android.hardware.nfc@1.0.so"
- "lib64/android.hardware.nfc@1.1.so"
- "lib64/android.hardware.nfc@1.2.so"
- "lib64/android.hardware.power-V1-ndk_platform.so"
- "lib64/android.hardware.power.stats@1.0.so"
- "lib64/android.hardware.power@1.0.so"
- "lib64/android.hardware.power@1.1.so"
- "lib64/android.hardware.power@1.2.so"
- "lib64/android.hardware.radio@1.0.so"
- "lib64/android.hardware.radio@1.1.so"
- "lib64/android.hardware.secure_element@1.0.so"
- "lib64/android.hardware.secure_element@1.1.so"
- "lib64/android.hardware.sensors@1.0.so"
- "lib64/android.hardware.soundtrigger@2.1.so"
- "lib64/android.hardware.soundtrigger@2.2.so"
- "lib64/android.hardware.tetheroffload.config@1.0.so"
- "lib64/android.hardware.tetheroffload.control@1.0.so"
- "lib64/android.hardware.thermal@1.0.so"
- "lib64/android.hardware.thermal@2.0.so"
- "lib64/android.hardware.usb.gadget@1.0.so"
- "lib64/android.hardware.usb.gadget@1.1.so"
- "lib64/android.hardware.usb@1.0.so"
- "lib64/android.hardware.usb@1.1.so"
- "lib64/android.hardware.usb@1.2.so"
- "lib64/android.hardware.usb@1.3.so"
- "lib64/android.hardware.wifi.hostapd@1.0.so"
- "lib64/android.hardware.wifi.hostapd@1.1.so"
- "lib64/android.hardware.wifi.hostapd@1.2.so"
- "lib64/android.hardware.wifi.hostapd@1.3.so"
- "lib64/android.hardware.wifi.supplicant@1.0.so"
- "lib64/android.hardware.wifi.supplicant@1.1.so"
- "lib64/android.hardware.wifi.supplicant@1.2.so"
- "lib64/android.hardware.wifi.supplicant@1.3.so"
- "lib64/android.hardware.wifi.supplicant@1.4.so"
- "lib64/android.hardware.wifi@1.0.so"
- "lib64/android.hardware.wifi@1.1.so"
- "lib64/android.hardware.wifi@1.2.so"
- "lib64/android.hardware.wifi@1.3.so"
- "lib64/android.hardware.wifi@1.4.so"
- "lib64/android.hardware.wifi@1.5.so"
- "lib64/android.hidl.allocator@1.0.so"
- "lib64/android.system.wifi.keystore@1.0.so"
- "lib64/camera.device@1.0-impl.so"
- "lib64/camera.device@3.2-impl.so"
- "lib64/camera.device@3.3-impl.so"
- "lib64/camera.device@3.4-external-impl.so"
- "lib64/camera.device@3.4-impl.so"
- "lib64/camera.device@3.5-external-impl.so"
- "lib64/camera.device@3.5-impl.so"
- "lib64/camera.device@3.6-external-impl.so"
- "lib64/ese_spi_nxp.so"
- "lib64/hw/android.hardware.bluetooth.audio@2.0-impl.so"
- "lib64/hw/android.hardware.boot@1.0-impl.so"
- "lib64/hw/android.hardware.camera.provider@2.4-impl.so"
- "lib64/hw/android.hardware.drm@1.0-impl.so"
- "lib64/hw/android.hardware.gnss@1.1-impl-qti.so"
- "lib64/hw/android.hardware.light@2.0-impl.so"
- "lib64/hw/android.hardware.memtrack@1.0-impl.so"
- "lib64/hw/android.hardware.renderscript@1.0-impl.so"
- "lib64/hw/android.hardware.soundtrigger@2.2-impl.so"
- "lib64/hw/audio.bluetooth.default.so"
- "lib64/hw/audio.primary.default.so"
- "lib64/hw/audio.primary.sdm710.so"
- "lib64/hw/audio.r_submix.default.so"
- "lib64/hw/audio.usb.default.so"
- "lib64/hw/bootctrl.sdm710.so"
- "lib64/hw/gralloc.default.so"
- "lib64/hw/local_time.default.so"
- "lib64/hw/power.default.so"
- "lib64/hw/sensors.bonito.so"
- "lib64/hw/vibrator.default.so"
- "lib64/libalsautils.so"
- "lib64/libbinderdebug.so"
- "lib64/libbluetooth_audio_session.so"
- "lib64/libcld80211.so"
- "lib64/libdisppower-pixel.so"
- "lib64/libeffects.so"
- "lib64/libeffectsconfig.so"
- "lib64/libgnss.so"
- "lib64/libgps.utils.so"
- "lib64/libhwc2on1adapter.so"
- "lib64/libhwc2onfbadapter.so"
- "lib64/libhwminijail.so"
- "lib64/libipanat.so"
- "lib64/libkeymaster4_1support.so"
- "lib64/libkeymaster4support.so"
- "lib64/libkeystore-engine-wifi-hidl.so"
- "lib64/libkeystore-wifi-hidl.so"
- "lib64/libloc_core.so"
- "lib64/liblocation_api.so"
- "lib64/libnbaio_mono.so"
- "lib64/libnetfilter_conntrack.so"
- "lib64/libnfnetlink.so"
- "lib64/liboffloadhal.so"
- "lib64/libperfmgr.so"
- "lib64/libpixelhealth.so"
- "lib64/libprotobuf-cpp-full-3.9.1.so"
- "lib64/libprotobuf-cpp-lite-3.9.1.so"
- "lib64/libreference-ril.so"
- "lib64/libril.so"
- "lib64/librilutils.so"
- "lib64/libsensorndkbridge.so"
- "lib64/libtinycompress.so"
- "lib64/libvibrator.so"
- "lib64/libwifi-hal.so"
- "lib64/libwpa_client.so"
- "lib64/libz_stable.so"
- "lib64/ls_client.so"
- "lib64/mediacas/libclearkeycasplugin.so"
- "lib64/mediadrm/libdrmclearkeyplugin.so"
- "lib64/nfc_nci_nxp.so"
- "lib64/pixel-power-ext-V1-ndk_platform.so"
- "lib64/pixelpowerstats_provider_aidl_interface-cpp.so"
- "lib64/soundfx/libaudiopreprocessing.so"
- "lib64/soundfx/libbundlewrapper.so"
- "lib64/soundfx/libdownmix.so"
- "lib64/soundfx/libdynproc.so"
- "lib64/soundfx/libeffectproxy.so"
- "lib64/soundfx/libhapticgenerator.so"
- "lib64/soundfx/libldnhncr.so"
- "lib64/soundfx/libmalistener.so"
- "lib64/soundfx/libqcompostprocbundle.so"
- "lib64/soundfx/libqcomvisualizer.so"
- "lib64/soundfx/libqcomvoiceprocessing.so"
- "lib64/soundfx/libqcomvoiceprocessingdescriptors.so"
- "lib64/soundfx/libreverbwrapper.so"
- "lib64/soundfx/libvisualizer.so"
- "lib64/soundfx/libvolumelistener.so"
- "lib64/vendor.nxp.nxpese@1.0.so"
- "lib64/vendor.nxp.nxpnfc@1.0.so"
- "odm/etc/NOTICE.xml.gz"
- "odm/etc/build.prop"
- "odm/etc/group"
- "odm/etc/passwd"
- "odm/etc/permissions/sku_G020A/android.hardware.nfc.uicc.xml"
- "odm/etc/permissions/sku_G020B/android.hardware.nfc.uicc.xml"
- "odm/etc/permissions/sku_G020C/android.hardware.nfc.uicc.xml"
- "odm/etc/permissions/sku_G020D/android.hardware.nfc.ese.xml"
- "odm/etc/permissions/sku_G020D/android.hardware.se.omapi.ese.xml"
- "odm/etc/permissions/sku_G020D/com.google.hardware.pixel.japan.xml"
- "odm/etc/permissions/sku_G020E/android.hardware.nfc.uicc.xml"
- "odm/etc/permissions/sku_G020F/android.hardware.nfc.uicc.xml"
- "odm/etc/permissions/sku_G020G/android.hardware.nfc.uicc.xml"
- "odm/etc/permissions/sku_G020H/android.hardware.nfc.ese.xml"
- "odm/etc/permissions/sku_G020H/com.google.hardware.pixel.japan.xml"
- "odm/etc/vintf/manifest_G020A.xml"
- "odm/etc/vintf/manifest_G020B.xml"
- "odm/etc/vintf/manifest_G020C.xml"
- "odm/etc/vintf/manifest_G020D.xml"
- "odm/etc/vintf/manifest_G020E.xml"
- "odm/etc/vintf/manifest_G020F.xml"
- "odm/etc/vintf/manifest_G020G.xml"
- "odm/etc/vintf/manifest_G020H.xml"
- "odm_dlkm/etc/NOTICE.xml.gz"
- "odm_dlkm/etc/build.prop"
- "overlay/EmergencyInfo__auto_generated_rro_vendor.apk"
- "overlay/NfcNci__auto_generated_rro_vendor.apk"
- "overlay/Settings__auto_generated_rro_vendor.apk"
- "overlay/StorageManager__auto_generated_rro_vendor.apk"
- "overlay/SystemUI__auto_generated_rro_vendor.apk"
- "overlay/TeleService__auto_generated_rro_vendor.apk"
- "overlay/Telecom__auto_generated_rro_vendor.apk"
- "overlay/Traceur__auto_generated_rro_vendor.apk"
- "overlay/framework-res__auto_generated_rro_vendor.apk"
- "ueventd.rc"
- "usr/idc/uinput-fpc.idc"
- "usr/keylayout/uinput-fpc.kl"
- "vendor_dlkm/etc/NOTICE.xml.gz"
- "vendor_dlkm/etc/build.prop"
-
- # Exclude overlays, symlinks and extra files that we override
-
- # Overlays
- "overlay/SettingsGoogle__auto_generated_rro_vendor.apk"
- "overlay/SystemUIGoogle__auto_generated_rro_vendor.apk"
-
- # SELinux
- "etc/selinux/precompiled_sepolicy.system_ext_sepolicy_and_mapping.sha256"
-
- # Symlinks
- "lib/libEGL_adreno.so"
- "lib/libq3dtools_adreno.so"
- "lib64/libEGL_adreno.so"
- "lib64/libq3dtools_adreno.so"
- "rfs/apq/gnss/hlos"
- "rfs/apq/gnss/ramdumps"
- "rfs/apq/gnss/readonly/firmware"
- "rfs/apq/gnss/readonly/vendor/firmware"
- "rfs/apq/gnss/readwrite"
- "rfs/apq/gnss/shared"
- "rfs/mdm/adsp/hlos"
- "rfs/mdm/adsp/ramdumps"
- "rfs/mdm/adsp/readonly/firmware"
- "rfs/mdm/adsp/readonly/vendor/firmware"
- "rfs/mdm/adsp/readwrite"
- "rfs/mdm/adsp/shared"
- "rfs/mdm/cdsp/hlos"
- "rfs/mdm/cdsp/ramdumps"
- "rfs/mdm/cdsp/readonly/firmware"
- "rfs/mdm/cdsp/readwrite"
- "rfs/mdm/cdsp/shared"
- "rfs/mdm/mpss/hlos"
- "rfs/mdm/mpss/ramdumps"
- "rfs/mdm/mpss/readonly/firmware"
- "rfs/mdm/mpss/readonly/vendor/firmware"
- "rfs/mdm/mpss/readwrite"
- "rfs/mdm/mpss/shared"
- "rfs/mdm/slpi/hlos"
- "rfs/mdm/slpi/ramdumps"
- "rfs/mdm/slpi/readonly/firmware"
- "rfs/mdm/slpi/readwrite"
- "rfs/mdm/slpi/shared"
- "rfs/mdm/tn/hlos"
- "rfs/mdm/tn/ramdumps"
- "rfs/mdm/tn/readonly/firmware"
- "rfs/mdm/tn/readwrite"
- "rfs/mdm/tn/shared"
- "rfs/msm/adsp/hlos"
- "rfs/msm/adsp/ramdumps"
- "rfs/msm/adsp/readonly/firmware"
- "rfs/msm/adsp/readonly/vendor/firmware"
- "rfs/msm/adsp/readwrite"
- "rfs/msm/adsp/shared"
- "rfs/msm/cdsp/hlos"
- "rfs/msm/cdsp/ramdumps"
- "rfs/msm/cdsp/readonly/firmware"
- "rfs/msm/cdsp/readonly/vendor/firmware"
- "rfs/msm/cdsp/readwrite"
- "rfs/msm/cdsp/shared"
- "rfs/msm/mpss/hlos"
- "rfs/msm/mpss/ramdumps"
- "rfs/msm/mpss/readonly/firmware"
- "rfs/msm/mpss/readonly/vendor/firmware"
- "rfs/msm/mpss/readwrite"
- "rfs/msm/mpss/shared"
- "rfs/msm/slpi/hlos"
- "rfs/msm/slpi/ramdumps"
- "rfs/msm/slpi/readonly/firmware"
- "rfs/msm/slpi/readonly/vendor/firmware"
- "rfs/msm/slpi/readwrite"
- "rfs/msm/slpi/shared"
-
- # Exclude files that compile with BUILD_WITHOUT_VENDOR := false
- # or manually added as build targets in device-lineage.mk
-
- # Bluetooth
- "lib/android.hardware.bluetooth@1.0.so"
- "lib/hardware.google.bluetooth.bt_channel_avoidance@1.0.so"
- "lib/hardware.google.bluetooth.sar@1.0.so"
- "lib/vendor.qti.hardware.bluetooth_audio@2.0.so"
- "lib64/android.hardware.bluetooth@1.0.so"
- "lib64/hardware.google.bluetooth.bt_channel_avoidance@1.0.so"
- "lib64/hardware.google.bluetooth.sar@1.0.so"
- "lib64/vendor.qti.hardware.bluetooth_audio@2.0.so"
-
- # CHRE
- "bin/chre"
- "etc/init/chre_daemon.rc"
-
- # Codec2
- "lib/android.hardware.media.c2@1.0.so"
- "lib/libavservices_minijail_vendor.so"
- "lib/libcodec2_hidl@1.0.so"
- "lib/libcodec2_hidl_plugin.so"
- "lib/libcodec2_vndk.so"
- "lib/libstagefright_bufferpool@2.0.1.so"
- "lib64/android.hardware.media.c2@1.0.so"
- "lib64/libcodec2_vndk.so"
- "lib64/libstagefright_bufferpool@2.0.1.so"
-
- # Confirmation UI
- "lib64/android.hardware.confirmationui@1.0.so"
- "lib64/libteeui_hal_support.so"
-
- # Display
- "bin/hw/vendor.qti.hardware.display.allocator@1.0-service"
- "etc/init/vendor.qti.hardware.display.allocator@1.0-service.rc"
- "lib/android.hardware.graphics.composer@2.1.so"
- "lib/android.hardware.graphics.composer@2.2.so"
- "lib/android.hardware.graphics.composer@2.3.so"
- "lib/hw/android.hardware.graphics.mapper@2.0-impl-qti-display.so"
- "lib/hw/gralloc.sdm710.so"
- "lib/hw/hwcomposer.sdm710.so"
- "lib/hw/memtrack.sdm710.so"
- "lib/libdisplaydebug.so"
- "lib/libdrm.so"
- "lib/libdrmutils.so"
- "lib/libgpu_tonemapper.so"
- "lib/libgralloccore.so"
- "lib/libgrallocutils.so"
- "lib/libqdMetaData.so"
- "lib/libqdutils.so"
- "lib/libqservice.so"
- "lib/libsdmcore.so"
- "lib/libsdmutils.so"
- "lib/vendor.display.config@1.0.so"
- "lib/vendor.display.config@1.1.so"
- "lib/vendor.display.config@1.2.so"
- "lib/vendor.display.config@1.3.so"
- "lib64/android.hardware.graphics.composer@2.3.so"
- "lib64/hw/android.hardware.graphics.mapper@2.0-impl-qti-display.so"
- "lib64/hw/gralloc.sdm710.so"
- "lib64/hw/hwcomposer.sdm710.so"
- "lib64/hw/memtrack.sdm710.so"
- "lib64/libdisplaydebug.so"
- "lib64/libdrm.so"
- "lib64/libdrmutils.so"
- "lib64/libgpu_tonemapper.so"
- "lib64/libgralloccore.so"
- "lib64/libgrallocutils.so"
- "lib64/libqdMetaData.so"
- "lib64/libqdutils.so"
- "lib64/libqservice.so"
- "lib64/libsdmcore.so"
- "lib64/libsdmutils.so"
- "lib64/vendor.display.config@1.0.so"
- "lib64/vendor.display.config@1.1.so"
- "lib64/vendor.display.config@1.2.so"
- "lib64/vendor.display.config@1.3.so"
-
- # HIDL
- "lib/libhidltransport.so"
- "lib/libhwbinder.so"
- "lib64/libhidltransport.so"
- "lib64/libhwbinder.so"
-
- # Identity credential
- "etc/permissions/android.hardware.identity_credential.xml"
- "lib64/android.hardware.identity-support-lib.so"
- "lib64/libcppbor_external.so"
- "lib64/libcppcose_rkp.so"
- "lib64/libkeymaster_messages.so"
- "lib64/libkeymaster_portable.so"
- "lib64/libpuresoftkeymasterdevice.so"
- "lib64/libsoft_attestation_cert.so"
-
- # Json
- "lib/libjson.so"
- "lib64/libjson.so"
-
- # Light
- "lib/hardware.google.light@1.0.so"
- "lib/hw/lights.qcom.so"
- "lib64/hardware.google.light@1.0.so"
- "lib64/hw/lights.qcom.so"
-
- # Media
- "lib/libOmxCore.so"
- "lib/libOmxVdec.so"
- "lib/libOmxVenc.so"
- "lib/libc2dcolorconvert.so"
- "lib/libmm-omxcore.so"
- "lib/libplatformconfig.so"
- "lib/libstagefrighthw.so"
- "lib64/libOmxCore.so"
- "lib64/libOmxVdec.so"
- "lib64/libOmxVenc.so"
- "lib64/libc2dcolorconvert.so"
- "lib64/libmm-omxcore.so"
- "lib64/libplatformconfig.so"
- "lib64/libstagefrighthw.so"
-
- # Protobuf
- "lib/libprotobuf-cpp-full.so"
- "lib64/libprotobuf-cpp-full.so"
-
- # RIL
- "bin/cnd"
- "bin/diag_mdlog"
- "bin/hw/qcrild"
- "bin/hw/vendor.google.radioext@1.0-service"
- "bin/ims_rtp_daemon"
- "bin/imsdatadaemon"
- "bin/imsqmidaemon"
- "bin/imsrcsd"
- "bin/irsc_util"
- "bin/modem_svc"
- "bin/netmgrd"
- "bin/pd-mapper"
- "bin/port-bridge"
- "bin/qti"
- "bin/rmt_storage"
- "bin/tftp_server"
- "etc/cne/SwimConfig.xml"
- "etc/cne/wqeclient/ATT/ATT_profile1.xml"
- "etc/cne/wqeclient/ATT/ATT_profile2.xml"
- "etc/cne/wqeclient/ATT/ATT_profile3.xml"
- "etc/cne/wqeclient/ATT/ATT_profile4.xml"
- "etc/cne/wqeclient/ATT/ATT_profile5.xml"
- "etc/cne/wqeclient/ATT/ATT_profile6.xml"
- "etc/cne/wqeclient/ROW/ROW_profile1.xml"
- "etc/cne/wqeclient/ROW/ROW_profile2.xml"
- "etc/cne/wqeclient/ROW/ROW_profile3.xml"
- "etc/cne/wqeclient/ROW/ROW_profile4.xml"
- "etc/cne/wqeclient/ROW/ROW_profile5.xml"
- "etc/cne/wqeclient/ROW/ROW_profile6.xml"
- "etc/cne/wqeclient/ROW/ROW_profile7.xml"
- "etc/cne/wqeclient/VZW/VZW_profile1.xml"
- "etc/cne/wqeclient/VZW/VZW_profile2.xml"
- "etc/cne/wqeclient/VZW/VZW_profile3.xml"
- "etc/cne/wqeclient/VZW/VZW_profile4.xml"
- "etc/cne/wqeclient/VZW/VZW_profile5.xml"
- "etc/cne/wqeclient/VZW/VZW_profile6.xml"
- "etc/data/dsi_config.xml"
- "etc/data/netmgr_config.xml"
- "etc/init/qcrild.rc"
- "etc/init/vendor.google.radioext@1.0-service.rc"
- "lib/com.qualcomm.qti.imscmservice@1.0.so"
- "lib/com.qualcomm.qti.uceservice@2.0.so"
- "lib/com.qualcomm.qti.uceservice@2.1.so"
- "lib/com.quicinc.cne.api@1.0.so"
- "lib/com.quicinc.cne.api@1.1.so"
- "lib/com.quicinc.cne.constants@1.0.so"
- "lib/com.quicinc.cne.constants@2.0.so"
- "lib/com.quicinc.cne.constants@2.1.so"
- "lib/com.quicinc.cne.server@1.0.so"
- "lib/com.quicinc.cne.server@2.0.so"
- "lib/com.quicinc.cne.server@2.1.so"
- "lib/lib-imsdpl.so"
- "lib/lib-imsqimf.so"
- "lib/lib-imsrcs-v2.so"
- "lib/lib-imsxml.so"
- "lib/lib-rtpcommon.so"
- "lib/lib-rtpcore.so"
- "lib/lib-rtpdaemoninterface.so"
- "lib/lib-rtpsl.so"
- "lib/lib-uceservice.so"
- "lib/libcne.so"
- "lib/libcneapiclient.so"
- "lib/libcneoplookup.so"
- "lib/libcneqmiutils.so"
- "lib/libconfigdb.so"
- "lib/libdiag.so"
- "lib/libdsi_netctrl.so"
- "lib/libdsutils.so"
- "lib/libidl.so"
- "lib/liblqe.so"
- "lib/libmdmdetect.so"
- "lib/libnetmgr.so"
- "lib/libpdmapper.so"
- "lib/libpdnotifier.so"
- "lib/libqcci_legacy.so"
- "lib/libqcmaputils.so"
- "lib/libqcrilFramework.so"
- "lib/libqdi.so"
- "lib/libqdp.so"
- "lib/libqmi.so"
- "lib/libqmi_cci.so"
- "lib/libqmi_client_helper.so"
- "lib/libqmi_client_qmux.so"
- "lib/libqmi_common_so.so"
- "lib/libqmi_csi.so"
- "lib/libqmi_encdec.so"
- "lib/libqmi_vs-google-1.so"
- "lib/libqmiservices.so"
- "lib/libqrtr.so"
- "lib/libqsocket.so"
- "lib/libril-qc-ltedirectdisc.so"
- "lib/libril-qc-radioconfig.so"
- "lib/libril-qcril-hook-oem.so"
- "lib/librilqmiservices.so"
- "lib/libsettings.so"
- "lib/libsystem_health_mon.so"
- "lib/libwms.so"
- "lib/libwqe.so"
- "lib/libxml.so"
- "lib/qcrild_librilutils.so"
- "lib/vendor.google.radioext@1.0.so"
- "lib/vendor.google.radioext@1.1.so"
- "lib/vendor.google.radioext@1.2.so"
- "lib/vendor.google.radioext@1.3.so"
- "lib/vendor.qti.hardware.data.latency@1.0.so"
- "lib/vendor.qti.hardware.radio.am@1.0.so"
- "lib/vendor.qti.hardware.radio.atcmdfwd@1.0.so"
- "lib/vendor.qti.hardware.radio.ims@1.0.so"
- "lib/vendor.qti.hardware.radio.ims@1.1.so"
- "lib/vendor.qti.hardware.radio.ims@1.2.so"
- "lib/vendor.qti.hardware.radio.ims@1.3.so"
- "lib/vendor.qti.hardware.radio.ims@1.4.so"
- "lib/vendor.qti.hardware.radio.internal.deviceinfo@1.0.so"
- "lib/vendor.qti.hardware.radio.qcrilhook@1.0.so"
- "lib/vendor.qti.hardware.radio.qtiradio@1.0.so"
- "lib/vendor.qti.hardware.radio.qtiradio@2.0.so"
- "lib/vendor.qti.hardware.radio.qtiradio@2.1.so"
- "lib/vendor.qti.hardware.radio.qtiradio@2.2.so"
- "lib/vendor.qti.hardware.radio.uim@1.0.so"
- "lib/vendor.qti.hardware.radio.uim@1.1.so"
- "lib/vendor.qti.hardware.radio.uim_remote_client@1.0.so"
- "lib/vendor.qti.hardware.radio.uim_remote_client@1.1.so"
- "lib/vendor.qti.hardware.radio.uim_remote_server@1.0.so"
- "lib/vendor.qti.ims.callinfo@1.0.so"
- "lib/vendor.qti.imsrtpservice@1.0-service-Impl.so"
- "lib/vendor.qti.imsrtpservice@1.0.so"
- "lib64/com.qualcomm.qti.imscmservice@1.0.so"
- "lib64/com.qualcomm.qti.uceservice@2.0.so"
- "lib64/com.qualcomm.qti.uceservice@2.1.so"
- "lib64/com.quicinc.cne.api@1.0.so"
- "lib64/com.quicinc.cne.api@1.1.so"
- "lib64/com.quicinc.cne.constants@1.0.so"
- "lib64/com.quicinc.cne.constants@2.0.so"
- "lib64/com.quicinc.cne.constants@2.1.so"
- "lib64/com.quicinc.cne.server@1.0.so"
- "lib64/com.quicinc.cne.server@2.0.so"
- "lib64/com.quicinc.cne.server@2.1.so"
- "lib64/lib-imsdpl.so"
- "lib64/lib-imsqimf.so"
- "lib64/lib-imsrcs-v2.so"
- "lib64/lib-imsxml.so"
- "lib64/lib-rtpcommon.so"
- "lib64/lib-rtpcore.so"
- "lib64/lib-rtpdaemoninterface.so"
- "lib64/lib-rtpsl.so"
- "lib64/lib-uceservice.so"
- "lib64/libcne.so"
- "lib64/libcneapiclient.so"
- "lib64/libcneoplookup.so"
- "lib64/libcneqmiutils.so"
- "lib64/libconfigdb.so"
- "lib64/libdiag.so"
- "lib64/libdsi_netctrl.so"
- "lib64/libdsutils.so"
- "lib64/libidl.so"
- "lib64/liblqe.so"
- "lib64/libmdmdetect.so"
- "lib64/libnetmgr.so"
- "lib64/libpdmapper.so"
- "lib64/libpdnotifier.so"
- "lib64/libqcci_legacy.so"
- "lib64/libqcmaputils.so"
- "lib64/libqcrilFramework.so"
- "lib64/libqdi.so"
- "lib64/libqdp.so"
- "lib64/libqmi.so"
- "lib64/libqmi_cci.so"
- "lib64/libqmi_client_helper.so"
- "lib64/libqmi_client_qmux.so"
- "lib64/libqmi_common_so.so"
- "lib64/libqmi_csi.so"
- "lib64/libqmi_encdec.so"
- "lib64/libqmi_modem_svc.so"
- "lib64/libqmi_thermal-google-1.so"
- "lib64/libqmi_vs-google-1.so"
- "lib64/libqmiservices.so"
- "lib64/libqrtr.so"
- "lib64/libqsocket.so"
- "lib64/libril-qc-hal-qmi.so"
- "lib64/libril-qc-ltedirectdisc.so"
- "lib64/libril-qc-radioconfig.so"
- "lib64/libril-qcril-hook-oem.so"
- "lib64/librilqmiservices.so"
- "lib64/librmnetctl.so"
- "lib64/libsettings.so"
- "lib64/libsystem_health_mon.so"
- "lib64/libwms.so"
- "lib64/libwqe.so"
- "lib64/libxml.so"
- "lib64/qcrild_librilutils.so"
- "lib64/vendor.google.radioext@1.0.so"
- "lib64/vendor.google.radioext@1.1.so"
- "lib64/vendor.google.radioext@1.2.so"
- "lib64/vendor.google.radioext@1.3.so"
- "lib64/vendor.qti.googleext.imsext@1.0.so"
- "lib64/vendor.qti.hardware.data.latency@1.0.so"
- "lib64/vendor.qti.hardware.radio.am@1.0.so"
- "lib64/vendor.qti.hardware.radio.atcmdfwd@1.0.so"
- "lib64/vendor.qti.hardware.radio.ims@1.0.so"
- "lib64/vendor.qti.hardware.radio.ims@1.1.so"
- "lib64/vendor.qti.hardware.radio.ims@1.2.so"
- "lib64/vendor.qti.hardware.radio.ims@1.3.so"
- "lib64/vendor.qti.hardware.radio.ims@1.4.so"
- "lib64/vendor.qti.hardware.radio.internal.deviceinfo@1.0.so"
- "lib64/vendor.qti.hardware.radio.lpa@1.0.so"
- "lib64/vendor.qti.hardware.radio.qcrilhook@1.0.so"
- "lib64/vendor.qti.hardware.radio.qtiradio@1.0.so"
- "lib64/vendor.qti.hardware.radio.qtiradio@2.0.so"
- "lib64/vendor.qti.hardware.radio.qtiradio@2.1.so"
- "lib64/vendor.qti.hardware.radio.qtiradio@2.2.so"
- "lib64/vendor.qti.hardware.radio.uim@1.0.so"
- "lib64/vendor.qti.hardware.radio.uim@1.1.so"
- "lib64/vendor.qti.hardware.radio.uim_remote_client@1.0.so"
- "lib64/vendor.qti.hardware.radio.uim_remote_client@1.1.so"
- "lib64/vendor.qti.hardware.radio.uim_remote_server@1.0.so"
- "lib64/vendor.qti.ims.callinfo@1.0.so"
- "lib64/vendor.qti.imsrtpservice@1.0-service-Impl.so"
- "lib64/vendor.qti.imsrtpservice@1.0.so"
- "radio/qcril_database/qcril.db"
- "radio/qcril_database/upgrade/0_initial.sql"
- "radio/qcril_database/upgrade/10_remove_germany_hard_ecc_110.sql"
- "radio/qcril_database/upgrade/11_israel_normal_ecc.sql"
- "radio/qcril_database/upgrade/12_brazil_ecc.sql"
- "radio/qcril_database/upgrade/13_show_emer_ui_in_india.sql"
- "radio/qcril_database/upgrade/1_version_intro.sql"
- "radio/qcril_database/upgrade/2_version_add_wps_config.sql"
- "radio/qcril_database/upgrade/3_version_google_feature.sql"
- "radio/qcril_database/upgrade/3_version_update_wps_config.sql"
- "radio/qcril_database/upgrade/4_version_google_feature.sql"
- "radio/qcril_database/upgrade/5_recheck_ecc_setting.sql"
- "radio/qcril_database/upgrade/6_remove_unnecessary_entry.sql"
- "radio/qcril_database/upgrade/7_singapore_ecc_995.sql"
- "radio/qcril_database/upgrade/8_germany_ecc_110.sql"
- "radio/qcril_database/upgrade/9_remove_germany_ecc_110.sql"
-
- # Wi-Fi
- "lib/libcld80211.so"
- "lib/libwifi-hal-ctrl.so"
- "lib/libwifi-hal-qcom.so"
- "lib64/libwifi-hal-ctrl.so"
- "lib64/libwifi-hal-qcom.so"
-
- # Wi-Fi service
- "bin/hw/vendor.google.wifi_ext@1.0-service-vendor"
- "etc/init/vendor.google.wifi_ext@1.0-service.rc"
- "etc/vintf/manifest/manifest_wifi_ext.xml"
- "lib64/google_wifi_firmware_config_info_cc_proto.so"
- "lib64/vendor.google.wifi_ext@1.1.so"
- "lib64/vendor.google.wifi_ext@1.2.so"
-
- # Misc interfaces
- "lib/android.frameworks.sensorservice@1.0.so"
- "lib/android.hardware.gatekeeper@1.0.so"
- "lib/android.hardware.keymaster@3.0.so"
- "lib/android.hardware.keymaster@4.0.so"
- "lib/android.hardware.sensors@1.0.so"
- "lib/android.hardware.sensors@2.0.so"
- "lib64/android.frameworks.stats@1.0.so"
- "lib64/android.hardware.authsecret@1.0.so"
- "lib64/android.hardware.biometrics.fingerprint@2.1.so"
- "lib64/android.hardware.biometrics.fingerprint@2.2.so"
- "lib64/android.hardware.gatekeeper@1.0.so"
- "lib64/android.hardware.neuralnetworks@1.0.so"
- "lib64/android.hardware.neuralnetworks@1.1.so"
- "lib64/android.hardware.neuralnetworks@1.2.so"
- "lib64/android.hardware.neuralnetworks@1.3.so"
- "lib64/android.hardware.oemlock@1.0.so"
- "lib64/android.hardware.radio.config@1.0.so"
- "lib64/android.hardware.radio.config@1.1.so"
- "lib64/android.hardware.radio.deprecated@1.0.so"
- "lib64/android.hardware.radio@1.2.so"
- "lib64/android.hardware.radio@1.3.so"
- "lib64/android.hardware.sensors@2.0.so"
- "lib64/android.hardware.weaver@1.0.so"
- "lib64/android.system.net.netd@1.0.so"
- "lib64/android.system.net.netd@1.1.so"
-
- # Completely skip files that are not required
-
- # Cryptfshw
- "etc/init/vendor.qti.hardware.cryptfshw@1.0-service-qti.rc"
- "lib/libcryptfshwcommon.so"
- "lib/vendor.qti.hardware.cryptfshw@1.0.so"
- "lib64/libcryptfshwcommon.so"
- "lib64/vendor.qti.hardware.cryptfshw@1.0.so"
-
- # Display
- "lib/libdisplayconfig.so"
- "lib64/libdisplayconfig.so"
-
- # Google battery
- "bin/hw/vendor.google.google_battery@1.1-service-vendor"
- "etc/init/vendor.google.google_battery@1.1-service.rc"
- "lib64/vendor.google.google_battery@1.0.so"
- "lib64/vendor.google.google_battery@1.1.so"
-
- # IOP
- "lib/vendor.qti.hardware.iop@1.0.so"
- "lib64/vendor.qti.hardware.iop@1.0.so"
-
- # Perf
- "lib/vendor.qti.hardware.perf@1.0.so"
- "lib/vendor.qti.hardware.perf@2.0.so"
- "lib64/vendor.qti.hardware.perf@1.0.so"
- "lib64/vendor.qti.hardware.perf@2.0.so"
-
- # Test mapping
- "firmware/TEST_MAPPING"
-)
-
-# Initialize the helper
-setup_vendor_deps "${ANDROID_ROOT}"
-
-generate_prop_list_from_image "${_input_image}" "${_output_file}" VENDOR_SKIP_FILES
-
-# Fixups
-function presign() {
- sed -i "s|vendor/${1}$|vendor/${1};PRESIGNED|g" "${_output_file}"
-}
-
-function symlink() {
- sed -i "s|vendor/${1}$|vendor/${1};SYMLINK=${2}|g" "${_output_file}"
-}
-
-function as_module() {
- sed -i "s|vendor/${1}$|-vendor/${1}|g" "${_output_file}"
-}
-
-function header() {
- sed -i "1s/^/${1}\n/" "${_output_file}"
-}
-
-symlink "lib/egl/libEGL_adreno.so" "vendor/lib/libEGL_adreno.so"
-symlink "lib/egl/libGLESv2_adreno.so" "vendor/lib/libGLESv2_adreno.so"
-symlink "lib/egl/libq3dtools_adreno.so" "vendor/lib/libq3dtools_adreno.so"
-symlink "lib64/egl/libEGL_adreno.so" "vendor/lib64/libEGL_adreno.so"
-symlink "lib64/egl/libGLESv2_adreno.so" "vendor/lib64/libGLESv2_adreno.so"
-symlink "lib64/egl/libq3dtools_adreno.so" "vendor/lib64/libq3dtools_adreno.so"
-
-as_module "lib/libbtnv.so"
-as_module "lib/libadsprpc.so"
-as_module "lib/libMpeg4SwEncoder.so"
-as_module "lib64/libbtnv.so"
-as_module "lib64/libadsprpc.so"
-as_module "lib64/libMpeg4SwEncoder.so"
-
-header "# All blobs are extracted from Google factory images for each new ASB"
diff --git a/bonito/setup-makefiles.py b/bonito/setup-makefiles.py
new file mode 100755
index 00000000..32947cfe
--- /dev/null
+++ b/bonito/setup-makefiles.py
@@ -0,0 +1 @@
+#!./extract-files.py --regenerate_makefiles
diff --git a/bonito/setup-makefiles.sh b/bonito/setup-makefiles.sh
deleted file mode 100755
index 828e2cfc..00000000
--- a/bonito/setup-makefiles.sh
+++ /dev/null
@@ -1,41 +0,0 @@
-#!/bin/bash
-#
-# Copyright (C) 2016 The CyanogenMod Project
-# Copyright (C) 2017-2023 The LineageOS Project
-#
-# SPDX-License-Identifier: Apache-2.0
-#
-
-set -e
-
-DEVICE=bonito
-VENDOR=google
-
-# Load extract_utils and do some sanity checks
-MY_DIR="${BASH_SOURCE%/*}"
-if [[ ! -d "${MY_DIR}" ]]; then MY_DIR="${PWD}"; fi
-
-ANDROID_ROOT="${MY_DIR}/../../../.."
-
-HELPER="${ANDROID_ROOT}/tools/extract-utils/extract_utils.sh"
-if [ ! -f "${HELPER}" ]; then
- echo "Unable to find helper script at ${HELPER}"
- exit 1
-fi
-source "${HELPER}"
-
-# Initialize the helper
-setup_vendor "${DEVICE}" "${VENDOR}" "${ANDROID_ROOT}"
-
-# Warning headers and guards
-write_headers
-
-write_makefiles "${MY_DIR}/proprietary-files.txt" true
-write_makefiles "${MY_DIR}/proprietary-files-carriersettings.txt" true
-write_makefiles "${MY_DIR}/proprietary-files-radio.txt" true
-write_makefiles "${MY_DIR}/proprietary-files-vendor.txt" true
-
-append_firmware_calls_to_makefiles "${MY_DIR}/proprietary-firmware.txt"
-
-# Finish
-write_footers
diff --git a/bootctrl/Android.bp b/bootctrl/Android.bp
deleted file mode 100644
index e990ba1a..00000000
--- a/bootctrl/Android.bp
+++ /dev/null
@@ -1,25 +0,0 @@
-//
-// Copyright (C) 2019 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.
-//
-
-package {
- default_applicable_licenses: ["Android-Apache-2.0"],
-}
-
-cc_library {
- name: "bootctrl.sdm710",
- defaults: ["bootctrl_hal_defaults"],
- static_libs: ["libgptutils.bonito"],
-}
diff --git a/device-bonito.mk b/device-bonito.mk
index c95e14d0..55809ff9 100644
--- a/device-bonito.mk
+++ b/device-bonito.mk
@@ -20,6 +20,9 @@ include device/google/bonito/device-common.mk
DEVICE_PACKAGE_OVERLAYS += device/google/bonito/bonito/overlay
+# CHRE
+$(call soong_config_set,chre,chre_daemon_dsp_library,//vendor/google/bonito:libadsprpc)
+
# SKU specific RROs
PRODUCT_PACKAGES += \
SettingsOverlayG020A \
diff --git a/device-common.mk b/device-common.mk
index 95b4cf12..3d5a4ccf 100644
--- a/device-common.mk
+++ b/device-common.mk
@@ -30,10 +30,6 @@ PRODUCT_PROPERTY_OVERRIDES += vendor.audio.adm.buffering.ms=3
PRODUCT_PROPERTY_OVERRIDES += audio_hal.period_multiplier=2
PRODUCT_PROPERTY_OVERRIDES += af.fast_track_multiplier=1
-# Set c2 codec in default
-PRODUCT_PROPERTY_OVERRIDES += debug.stagefright.ccodec=4
-PRODUCT_PROPERTY_OVERRIDES += debug.stagefright.omx_default_rank=512
-
# Setting vendor SPL
VENDOR_SECURITY_PATCH = 2022-05-05
@@ -98,8 +94,6 @@ PRODUCT_COPY_FILES += \
PRODUCT_USE_DYNAMIC_PARTITIONS := true
PRODUCT_RETROFIT_DYNAMIC_PARTITIONS := true
PRODUCT_PACKAGES += \
- bootctrl.sdm710 \
- bootctrl.sdm710.recovery \
check_dynamic_partitions \
AB_OTA_POSTINSTALL_CONFIG += \
diff --git a/device-lineage.mk b/device-lineage.mk
index c7dc0269..d0329f44 100644
--- a/device-lineage.mk
+++ b/device-lineage.mk
@@ -10,9 +10,6 @@ DEVICE_PACKAGE_OVERLAYS += $(LOCAL_PATH)/overlay-lineage
# Add common definitions for Qualcomm
$(call inherit-product, hardware/qcom-caf/common/common.mk)
-# PifPrebuilt
-$(call inherit-product-if-exists, vendor/certification/config.mk)
-
# AiAi Config
PRODUCT_COPY_FILES += \
$(LOCAL_PATH)/allowlist_com.google.android.as.xml:$(TARGET_COPY_OUT_PRODUCT)/etc/sysconfig/allowlist_com.google.android.as.xml
@@ -31,15 +28,20 @@ PRODUCT_COPY_FILES += \
frameworks/native/data/etc/android.hardware.telephony.euicc.xml:$(TARGET_COPY_OUT_PRODUCT)/etc/permissions/android.hardware.telephony.euicc.xml
# GMS
-# ifeq ($(WITH_GMS),true)
-# GMS_MAKEFILE=gms_minimal.mk
-# endif
-WITH_GMS := true
-$(call inherit-product, vendor/gapps/arm64/arm64-vendor.mk)
+ifeq ($(WITH_GMS),true)
+GMS_MAKEFILE=gms_minimal.mk
+endif
# Google Assistant
PRODUCT_PRODUCT_PROPERTIES += ro.opa.eligible_device=true
+# Lineage Health
+include hardware/google/pixel/lineage_health/device.mk
+
+$(call soong_config_set,lineage_health,charging_control_charging_path,/sys/class/power_supply/battery/charge_disable)
+$(call soong_config_set,lineage_health,charging_control_charging_enabled,0)
+$(call soong_config_set,lineage_health,charging_control_charging_disabled,1)
+
# LiveDisplay
PRODUCT_PACKAGES += \
vendor.lineage.livedisplay@2.0-service-sdm
@@ -53,75 +55,20 @@ PRODUCT_PACKAGES += \
PresencePolling \
RcsService
-# Build necessary packages for product
-
-# Display
-PRODUCT_PACKAGES += \
- vendor.display.config@1.0
-
# Build necessary packages for vendor
-# Bluetooth
-PRODUCT_PACKAGES += \
- android.hardware.bluetooth@1.0.vendor \
- hardware.google.bluetooth.bt_channel_avoidance@1.0.vendor \
- hardware.google.bluetooth.sar@1.0.vendor:64 \
- vendor.qti.hardware.bluetooth_audio@2.0.vendor
-
# CHRE
PRODUCT_PACKAGES += \
- chre
-
-# Codec2
-PRODUCT_PACKAGES += \
- android.hardware.media.c2@1.0.vendor:32 \
- libavservices_minijail_vendor:32 \
- libavservices_minijail.vendor:64 \
- libcodec2_hidl@1.0.vendor:32 \
- libcodec2_vndk.vendor \
- libstagefright_bufferpool@2.0.1.vendor
+ chre_daemon_msm
# Configstore
PRODUCT_PACKAGES += \
disable_configstore
-# Confirmation UI
-PRODUCT_PACKAGES += \
- android.hardware.confirmationui@1.0.vendor:64 \
- libteeui_hal_support.vendor:64
-
-# Display
-PRODUCT_PACKAGES += \
- vendor.display.config@1.0.vendor \
- vendor.display.config@1.1.vendor \
- vendor.display.config@1.2.vendor \
- vendor.display.config@1.3.vendor
-
-# HIDL
-PRODUCT_PACKAGES += \
- libhidltransport.vendor \
- libhwbinder.vendor
-
# Identity credential
PRODUCT_PACKAGES += \
- android.hardware.identity-support-lib.vendor:64 \
android.hardware.identity_credential.xml
-# Nos
-PRODUCT_PACKAGES += \
- libkeymaster4support.vendor:64 \
- libkeymaster4_1support.vendor:64
-
-# Json
-PRODUCT_PACKAGES += \
- libjson
-
-# Protobuf
-PRODUCT_PACKAGES += \
- libprotobuf-cpp-full-vendorcompat \
- libprotobuf-cpp-full-3.9.1-vendorcompat \
- libprotobuf-cpp-lite-3.9.1-vendorcompat
-
# Telephony
PRODUCT_PACKAGES += \
qti-telephony-hidl-wrapper \
@@ -133,68 +80,7 @@ PRODUCT_PACKAGES += \
# VNDK FWK detect
PRODUCT_PACKAGES += \
- libqti_vndfwk_detect.vendor \
libvndfwk_detect_jni.qti.vendor
-# Wi-Fi
-PRODUCT_PACKAGES += \
- android.hardware.wifi-V2-ndk.vendor:64 \
- android.hardware.wifi@1.0.vendor:64 \
- libwifi-hal:64 \
- libwifi-hal-qcom \
- libwifi-system-iface.vendor:64
-
-# Misc interfaces
-PRODUCT_PACKAGES += \
- android.frameworks.sensorservice@1.0.vendor \
- android.frameworks.stats@1.0.vendor:64 \
- android.hardware.authsecret@1.0.vendor:64 \
- android.hardware.biometrics.fingerprint@2.1.vendor:64 \
- android.hardware.biometrics.fingerprint@2.2.vendor:64 \
- android.hardware.gatekeeper@1.0.vendor \
- android.hardware.keymaster@3.0.vendor:32 \
- android.hardware.keymaster@4.0.vendor:32 \
- android.hardware.keymaster@4.1.vendor:64 \
- android.hardware.neuralnetworks@1.0.vendor:64 \
- android.hardware.neuralnetworks@1.1.vendor:64 \
- android.hardware.neuralnetworks@1.2.vendor:64 \
- android.hardware.neuralnetworks@1.3.vendor:64 \
- android.hardware.oemlock@1.0.vendor:64 \
- android.hardware.radio.config@1.0.vendor:64 \
- android.hardware.radio.config@1.1.vendor:64 \
- android.hardware.radio.config@1.2.vendor:64 \
- android.hardware.radio.deprecated@1.0.vendor:64 \
- android.hardware.radio@1.2.vendor:64 \
- android.hardware.radio@1.3.vendor:64 \
- android.hardware.radio@1.4.vendor:64 \
- android.hardware.radio@1.5.vendor:64 \
- android.hardware.secure_element@1.1.vendor:64 \
- android.hardware.secure_element@1.2.vendor:64 \
- android.hardware.sensors@1.0.vendor:32 \
- android.hardware.sensors@2.0.vendor \
- android.hardware.thermal@1.0.vendor:64 \
- android.hardware.weaver@1.0.vendor:64 \
- android.system.net.netd@1.1.vendor:64
-
-# Misc
-PRODUCT_PACKAGES += \
- libcrypto_utils.vendor:64 \
- libpng.vendor \
- libsqlite.vendor \
- libssl.vendor:32
-
# Properties
TARGET_VENDOR_PROP := $(LOCAL_PATH)/vendor.prop
-
-# Shims
-PRODUCT_PACKAGES += \
- android.frameworks.stats-V1-ndk_platform.vendor:64 \
- android.hardware.identity-V3-ndk_platform.vendor:64 \
- android.hardware.keymaster-V3-ndk_platform.vendor:64 \
- android.hardware.power-V1-ndk_platform.vendor:64 \
- android.hardware.power.stats-V1-ndk_platform:64 \
- android.hardware.rebootescrow-V1-ndk_platform.vendor:64
-
-# VNDK
-PRODUCT_PACKAGES += \
- libcrypto-v33
diff --git a/device-sargo.mk b/device-sargo.mk
index e4931560..9ce8c15f 100644
--- a/device-sargo.mk
+++ b/device-sargo.mk
@@ -20,6 +20,9 @@ include device/google/bonito/device-common.mk
DEVICE_PACKAGE_OVERLAYS += device/google/bonito/sargo/overlay
+# CHRE
+$(call soong_config_set,chre,chre_daemon_dsp_library,//vendor/google/sargo:libadsprpc)
+
# SKU specific RROs
PRODUCT_PACKAGES += \
SettingsOverlayG020E \
diff --git a/device.mk b/device.mk
index eafaf678..fe3bc898 100644
--- a/device.mk
+++ b/device.mk
@@ -24,12 +24,8 @@ PRODUCT_SOONG_NAMESPACES += \
hardware/google/pixel \
hardware/qcom/sdm845 \
hardware/qcom/wlan/legacy \
- vendor/google/camera \
- vendor/qcom/sdm845 \
- vendor/google/interfaces \
- vendor/google_devices/common/proprietary/confirmatioui_hal \
- vendor/google_nos/host/android \
- vendor/google_nos/test/system-test-harness
+ hardware/qcom-caf/bootctrl \
+ vendor/qcom/opensource/data-ipa-cfg-mgr-legacy-um
PRODUCT_PROPERTY_OVERRIDES += \
keyguard.no_require_sim=true
@@ -137,10 +133,6 @@ PRODUCT_PACKAGES += \
PRODUCT_PRODUCT_PROPERTIES += \
ro.sys.sdcardfs=1
-PRODUCT_PACKAGES += \
- bootctrl.sdm710 \
- bootctrl.sdm710.recovery
-
PRODUCT_PROPERTY_OVERRIDES += \
ro.cp_system_other_odex=1
@@ -350,10 +342,6 @@ PRODUCT_PACKAGES += \
android.hardware.graphics.mapper@2.0-impl-qti-display \
vendor.qti.hardware.display.allocator@1.0-service
-# RenderScript HAL
-PRODUCT_PACKAGES += \
- android.hardware.renderscript@1.0-impl
-
# Health HAL
PRODUCT_PACKAGES += \
android.hardware.health@2.1-impl-bonito \
@@ -372,9 +360,7 @@ PRODUCT_PROPERTY_OVERRIDES += \
# Memtrack HAL
PRODUCT_PACKAGES += \
- memtrack.$(TARGET_CHIPSET) \
- android.hardware.memtrack@1.0-impl \
- android.hardware.memtrack@1.0-service
+ vendor.qti.hardware.memtrack-service
# Bluetooth SoC
PRODUCT_PROPERTY_OVERRIDES += \
@@ -426,22 +412,6 @@ PRODUCT_PACKAGES += \
PRODUCT_PACKAGES += \
android.hardware.usb.gadget-service.bonito
-PRODUCT_PACKAGES += \
- libmm-omxcore \
- libOmxCore \
- libstagefrighthw \
- libOmxVdec \
- libOmxVenc \
- libc2dcolorconvert
-
-# Enable Codec 2.0
-PRODUCT_PROPERTY_OVERRIDES += \
- debug.media.codec2=2 \
-
-# Disable OMX
-PRODUCT_PROPERTY_OVERRIDES += \
- vendor.media.omx=0 \
-
# Create input surface on the framework side
PRODUCT_PROPERTY_OVERRIDES += \
debug.stagefright.c2inputsurface=-1 \
@@ -488,9 +458,10 @@ endif
# Boot control HAL
PRODUCT_PACKAGES += \
- android.hardware.boot@1.2-impl-pixel-legacy \
- android.hardware.boot@1.2-impl-pixel-legacy.recovery \
- android.hardware.boot@1.2-service \
+ android.hardware.boot-service.qti \
+ android.hardware.boot-service.qti.recovery
+
+$(call soong_config_set,QTI_GPT_UTILS,USE_BSG_FRAMEWORK,false)
PRODUCT_COPY_FILES += \
$(LOCAL_PATH)/thermal_info_config_$(PRODUCT_HARDWARE).json:$(TARGET_COPY_OUT_VENDOR)/etc/thermal_info_config.json
@@ -527,8 +498,8 @@ endif
# Wifi
PRODUCT_PACKAGES += \
+ android.hardware.wifi-service \
wificond \
- libwpa_client \
WifiOverlay
# Connectivity
@@ -600,10 +571,7 @@ PRODUCT_COPY_FILES += \
PRODUCT_COPY_FILES += \
$(LOCAL_PATH)/media_codecs.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs.xml \
$(LOCAL_PATH)/media_codecs_performance.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_performance.xml \
- frameworks/av/media/libstagefright/data/media_codecs_google_telephony.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_google_telephony.xml \
- frameworks/av/media/libstagefright/data/media_codecs_google_video.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_google_video.xml \
- $(LOCAL_PATH)/media_profiles_V1_0.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_profiles_V1_0.xml \
- $(LOCAL_PATH)/media_codecs_omx.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_omx.xml
+ $(LOCAL_PATH)/media_profiles_V1_0.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_profiles_V1_0.xml
PRODUCT_PROPERTY_OVERRIDES += \
audio.snd_card.open.retries=50
@@ -619,10 +587,6 @@ PRODUCT_PACKAGES += \
PRODUCT_COPY_FILES += \
$(LOCAL_PATH)/gps.conf:$(TARGET_COPY_OUT_VENDOR)/etc/gps.conf
-# Vendor seccomp policy files for media components:
-PRODUCT_COPY_FILES += \
- $(LOCAL_PATH)/seccomp_policy/mediacodec.policy:$(TARGET_COPY_OUT_VENDOR)/etc/seccomp_policy/mediacodec.policy
-
ifneq (,$(filter eng, $(TARGET_BUILD_VARIANT)))
# Subsystem ramdump
PRODUCT_PROPERTY_OVERRIDES += \
diff --git a/gpt-utils/Android.bp b/dumpstate/Android.bp
index f599f1a8..1ccc41b5 100644
--- a/gpt-utils/Android.bp
+++ b/dumpstate/Android.bp
@@ -1,5 +1,5 @@
//
-// Copyright (C) 2019 The Android Open Source Project
+// Copyright 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.
@@ -16,32 +16,32 @@
package {
// See: http://go/android-license-faq
- // A large-scale-change added 'default_applicable_licenses' to import
- // all of the 'license_kinds' from "device_google_bonito_license"
- // to get the below license kinds:
- // SPDX-license-identifier-BSD
- default_applicable_licenses: ["device_google_bonito_license"],
+ default_applicable_licenses: [
+ "Android-Apache-2.0",
+ ],
}
-cc_library {
- name: "libgptutils.bonito",
- vendor: true,
- recovery_available: true,
+cc_binary {
+ name: "android.hardware.dumpstate@1.1-service.bonito",
+ init_rc: ["android.hardware.dumpstate@1.1-service.bonito.rc"],
+ relative_install_path: "hw",
+ srcs: [
+ "DumpstateDevice.cpp",
+ "service.cpp",
+ ],
shared_libs: [
+ "android.hardware.dumpstate@1.0",
+ "android.hardware.dumpstate@1.1",
+ "libbase",
"libcutils",
+ "libdumpstateutil",
+ "libhidlbase",
"liblog",
- "libz",
+ "libutils",
],
cflags: [
- "-Wall",
"-Werror",
+ "-Wall",
],
- srcs: [
- "gpt-utils.cpp",
- ],
- owner: "qti",
- header_libs: [
- "device_kernel_headers",
- ],
- export_include_dirs: ["."],
+ proprietary: true,
}
diff --git a/dumpstate/Android.mk b/dumpstate/Android.mk
deleted file mode 100644
index 6e7a5399..00000000
--- a/dumpstate/Android.mk
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# Copyright 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.
-#
-
-LOCAL_PATH:= $(call my-dir)
-include $(CLEAR_VARS)
-LOCAL_MODULE := android.hardware.dumpstate@1.1-service.bonito
-LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
-LOCAL_LICENSE_CONDITIONS := notice
-LOCAL_INIT_RC := android.hardware.dumpstate@1.1-service.bonito.rc
-LOCAL_MODULE_RELATIVE_PATH := hw
-
-LOCAL_SRC_FILES := \
- DumpstateDevice.cpp \
- service.cpp
-
-LOCAL_SHARED_LIBRARIES := \
- android.hardware.dumpstate@1.0 \
- android.hardware.dumpstate@1.1 \
- libbase \
- libcutils \
- libdumpstateutil \
- libhidlbase \
- liblog \
- libutils
-
-LOCAL_CFLAGS := -Werror -Wall
-
-LOCAL_MODULE_TAGS := optional
-LOCAL_PROPRIETARY_MODULE := true
-
-include $(BUILD_EXECUTABLE)
diff --git a/dumpstate/DumpstateDevice.cpp b/dumpstate/DumpstateDevice.cpp
index cae03783..cae03783 100755..100644
--- a/dumpstate/DumpstateDevice.cpp
+++ b/dumpstate/DumpstateDevice.cpp
diff --git a/extract-files.py b/extract-files.py
new file mode 100755
index 00000000..7c80ec7f
--- /dev/null
+++ b/extract-files.py
@@ -0,0 +1,13 @@
+#!/bin/bash
+#
+# SPDX-FileCopyrightText: 2024 The LineageOS Project
+# SPDX-License-Identifier: Apache-2.0
+#
+
+set -e
+
+MY_DIR="$(cd "$(dirname "${0}")"; pwd -P)"
+
+pushd "${MY_DIR}/bonito"
+./extract-files.py $@
+popd
diff --git a/extract-files.sh b/extract-files.sh
deleted file mode 100755
index 86bfc713..00000000
--- a/extract-files.sh
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/bin/bash
-#
-# Copyright (C) 2016 The CyanogenMod Project
-# Copyright (C) 2017-2020 The LineageOS Project
-#
-# SPDX-License-Identifier: Apache-2.0
-#
-
-set -e
-
-MY_DIR="$(cd "$(dirname "${0}")"; pwd -P)"
-
-"${MY_DIR}/bonito/extract-files.sh" "$@"
diff --git a/gpt-utils/gpt-utils.cpp b/gpt-utils/gpt-utils.cpp
deleted file mode 100644
index 6e8f91bc..00000000
--- a/gpt-utils/gpt-utils.cpp
+++ /dev/null
@@ -1,1546 +0,0 @@
-/*
- * Copyright (c) 2013, The Linux Foundation. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- * * Neither the name of The Linux Foundation nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
- * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
- * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#define _LARGEFILE64_SOURCE /* enable lseek64() */
-
-/******************************************************************************
- * INCLUDE SECTION
- ******************************************************************************/
-#include <fcntl.h>
-#include <string.h>
-#include <errno.h>
-#include <sys/stat.h>
-#include <sys/ioctl.h>
-#include <scsi/ufs/ioctl.h>
-#include <scsi/ufs/ufs.h>
-#include <unistd.h>
-#include <linux/fs.h>
-#include <limits.h>
-#include <dirent.h>
-#include <inttypes.h>
-#include <linux/kernel.h>
-#include <map>
-#include <vector>
-#include <string>
-#define LOG_TAG "gpt-utils"
-#include <cutils/log.h>
-#include <cutils/properties.h>
-#include "gpt-utils.h"
-#include <endian.h>
-#include <zlib.h>
-
-
-/******************************************************************************
- * DEFINE SECTION
- ******************************************************************************/
-#define BLK_DEV_FILE "/dev/block/mmcblk0"
-/* list the names of the backed-up partitions to be swapped */
-/* extension used for the backup partitions - tzbak, abootbak, etc. */
-#define BAK_PTN_NAME_EXT "bak"
-#define XBL_PRIMARY "/dev/block/platform/soc/7c4000.sdhci/by-name/xbl"
-#define XBL_BACKUP "/dev/block/platform/soc/7c4000.sdhci/by-name/xblbak"
-#define XBL_AB_PRIMARY "/dev/block/platform/soc/7c4000.sdhci/by-name/xbl_a"
-#define XBL_AB_SECONDARY "/dev/block/platform/soc/7c4000.sdhci/by-name/xbl_b"
-/* GPT defines */
-#define MAX_LUNS 26
-//Size of the buffer that needs to be passed to the UFS ioctl
-#define UFS_ATTR_DATA_SIZE 32
-//This will allow us to get the root lun path from the path to the partition.
-//i.e: from /dev/block/sdaXXX get /dev/block/sda. The assumption here is that
-//the boot critical luns lie between sda to sdz which is acceptable because
-//only user added external disks,etc would lie beyond that limit which do not
-//contain partitions that interest us here.
-#define PATH_TRUNCATE_LOC (sizeof("/dev/block/sda") - 1)
-
-//From /dev/block/sda get just sda
-#define LUN_NAME_START_LOC (sizeof("/dev/block/") - 1)
-#define BOOT_LUN_A_ID 1
-#define BOOT_LUN_B_ID 2
-/******************************************************************************
- * MACROS
- ******************************************************************************/
-
-
-#define GET_4_BYTES(ptr) ((uint32_t) *((uint8_t *)(ptr)) | \
- ((uint32_t) *((uint8_t *)(ptr) + 1) << 8) | \
- ((uint32_t) *((uint8_t *)(ptr) + 2) << 16) | \
- ((uint32_t) *((uint8_t *)(ptr) + 3) << 24))
-
-#define GET_8_BYTES(ptr) ((uint64_t) *((uint8_t *)(ptr)) | \
- ((uint64_t) *((uint8_t *)(ptr) + 1) << 8) | \
- ((uint64_t) *((uint8_t *)(ptr) + 2) << 16) | \
- ((uint64_t) *((uint8_t *)(ptr) + 3) << 24) | \
- ((uint64_t) *((uint8_t *)(ptr) + 4) << 32) | \
- ((uint64_t) *((uint8_t *)(ptr) + 5) << 40) | \
- ((uint64_t) *((uint8_t *)(ptr) + 6) << 48) | \
- ((uint64_t) *((uint8_t *)(ptr) + 7) << 56))
-
-#define PUT_4_BYTES(ptr, y) *((uint8_t *)(ptr)) = (y) & 0xff; \
- *((uint8_t *)(ptr) + 1) = ((y) >> 8) & 0xff; \
- *((uint8_t *)(ptr) + 2) = ((y) >> 16) & 0xff; \
- *((uint8_t *)(ptr) + 3) = ((y) >> 24) & 0xff;
-
-/******************************************************************************
- * TYPES
- ******************************************************************************/
-using namespace std;
-enum gpt_state {
- GPT_OK = 0,
- GPT_BAD_SIGNATURE,
- GPT_BAD_CRC
-};
-//List of LUN's containing boot critical images.
-//Required in the case of UFS devices
-struct update_data {
- char lun_list[MAX_LUNS][PATH_MAX];
- uint32_t num_valid_entries;
-};
-
-/******************************************************************************
- * FUNCTIONS
- ******************************************************************************/
-/**
- * ==========================================================================
- *
- * \brief Read/Write len bytes from/to block dev
- *
- * \param [in] fd block dev file descriptor (returned from open)
- * \param [in] rw RW flag: 0 - read, != 0 - write
- * \param [in] offset block dev offset [bytes] - RW start position
- * \param [in] buf Pointer to the buffer containing the data
- * \param [in] len RW size in bytes. Buf must be at least that big
- *
- * \return 0 on success
- *
- * ==========================================================================
- */
-static int blk_rw(int fd, int rw, int64_t offset, uint8_t *buf, unsigned len)
-{
- int r;
-
- if (lseek64(fd, offset, SEEK_SET) < 0) {
- fprintf(stderr, "block dev lseek64 %" PRIi64 " failed: %s\n", offset,
- strerror(errno));
- return -1;
- }
-
- if (rw)
- r = write(fd, buf, len);
- else
- r = read(fd, buf, len);
-
- if (r < 0) {
- fprintf(stderr, "block dev %s failed: %s\n", rw ? "write" : "read",
- strerror(errno));
- } else {
- if (rw) {
- r = fsync(fd);
- if (r < 0)
- fprintf(stderr, "fsync failed: %s\n", strerror(errno));
- } else {
- r = 0;
- }
- }
-
- return r;
-}
-
-
-
-/**
- * ==========================================================================
- *
- * \brief Search within GPT for partition entry with the given name
- * or it's backup twin (name-bak).
- *
- * \param [in] ptn_name Partition name to seek
- * \param [in] pentries_start Partition entries array start pointer
- * \param [in] pentries_end Partition entries array end pointer
- * \param [in] pentry_size Single partition entry size [bytes]
- *
- * \return First partition entry pointer that matches the name or NULL
- *
- * ==========================================================================
- */
-static uint8_t *gpt_pentry_seek(const char *ptn_name,
- const uint8_t *pentries_start,
- const uint8_t *pentries_end,
- uint32_t pentry_size)
-{
- char *pentry_name;
- unsigned len = strlen(ptn_name);
-
- for (pentry_name = (char *) (pentries_start + PARTITION_NAME_OFFSET);
- pentry_name < (char *) pentries_end; pentry_name += pentry_size) {
- char name8[MAX_GPT_NAME_SIZE / 2];
- unsigned i;
-
- /* Partition names in GPT are UTF-16 - ignoring UTF-16 2nd byte */
- for (i = 0; i < sizeof(name8); i++)
- name8[i] = pentry_name[i * 2];
- if (!strncmp(ptn_name, name8, len))
- if (name8[len] == 0 || !strcmp(&name8[len], BAK_PTN_NAME_EXT))
- return (uint8_t *) (pentry_name - PARTITION_NAME_OFFSET);
- }
-
- return NULL;
-}
-
-
-
-/**
- * ==========================================================================
- *
- * \brief Swaps boot chain in GPT partition entries array
- *
- * \param [in] pentries_start Partition entries array start
- * \param [in] pentries_end Partition entries array end
- * \param [in] pentry_size Single partition entry size
- *
- * \return 0 on success, 1 if no backup partitions found
- *
- * ==========================================================================
- */
-static int gpt_boot_chain_swap(const uint8_t *pentries_start,
- const uint8_t *pentries_end,
- uint32_t pentry_size)
-{
- const char ptn_swap_list[][MAX_GPT_NAME_SIZE] = { PTN_SWAP_LIST };
-
- int backup_not_found = 1;
- unsigned i;
-
- for (i = 0; i < ARRAY_SIZE(ptn_swap_list); i++) {
- uint8_t *ptn_entry;
- uint8_t *ptn_bak_entry;
- uint8_t ptn_swap[PTN_ENTRY_SIZE];
- //Skip the xbl partition on UFS devices. That is handled
- //seperately.
- if (gpt_utils_is_ufs_device() && !strncmp(ptn_swap_list[i],
- PTN_XBL,
- strlen(PTN_XBL)))
- continue;
-
- ptn_entry = gpt_pentry_seek(ptn_swap_list[i], pentries_start,
- pentries_end, pentry_size);
- if (ptn_entry == NULL)
- continue;
-
- ptn_bak_entry = gpt_pentry_seek(ptn_swap_list[i],
- ptn_entry + pentry_size, pentries_end, pentry_size);
- if (ptn_bak_entry == NULL) {
- fprintf(stderr, "'%s' partition not backup - skip safe update\n",
- ptn_swap_list[i]);
- continue;
- }
-
- /* swap primary <-> backup partition entries */
- memcpy(ptn_swap, ptn_entry, PTN_ENTRY_SIZE);
- memcpy(ptn_entry, ptn_bak_entry, PTN_ENTRY_SIZE);
- memcpy(ptn_bak_entry, ptn_swap, PTN_ENTRY_SIZE);
- backup_not_found = 0;
- }
-
- return backup_not_found;
-}
-
-
-
-/**
- * ==========================================================================
- *
- * \brief Sets secondary GPT boot chain
- *
- * \param [in] fd block dev file descriptor
- * \param [in] boot Boot chain to switch to
- *
- * \return 0 on success
- *
- * ==========================================================================
- */
-static int gpt2_set_boot_chain(int fd, enum boot_chain boot)
-{
- int64_t gpt2_header_offset;
- uint64_t pentries_start_offset;
- uint32_t gpt_header_size;
- uint32_t pentry_size;
- uint32_t pentries_array_size;
-
- uint8_t *gpt_header = NULL;
- uint8_t *pentries = NULL;
- uint32_t crc;
- uint32_t blk_size = 0;
- int r;
-
- if (ioctl(fd, BLKSSZGET, &blk_size) != 0) {
- fprintf(stderr, "Failed to get GPT device block size: %s\n",
- strerror(errno));
- r = -1;
- goto EXIT;
- }
- gpt_header = (uint8_t*)malloc(blk_size);
- if (!gpt_header) {
- fprintf(stderr, "Failed to allocate memory to hold GPT block\n");
- r = -1;
- goto EXIT;
- }
- gpt2_header_offset = lseek64(fd, 0, SEEK_END) - blk_size;
- if (gpt2_header_offset < 0) {
- fprintf(stderr, "Getting secondary GPT header offset failed: %s\n",
- strerror(errno));
- r = -1;
- goto EXIT;
- }
-
- /* Read primary GPT header from block dev */
- r = blk_rw(fd, 0, blk_size, gpt_header, blk_size);
-
- if (r) {
- fprintf(stderr, "Failed to read primary GPT header from blk dev\n");
- goto EXIT;
- }
- pentries_start_offset =
- GET_8_BYTES(gpt_header + PENTRIES_OFFSET) * blk_size;
- pentry_size = GET_4_BYTES(gpt_header + PENTRY_SIZE_OFFSET);
- pentries_array_size =
- GET_4_BYTES(gpt_header + PARTITION_COUNT_OFFSET) * pentry_size;
-
- pentries = (uint8_t *) calloc(1, pentries_array_size);
- if (pentries == NULL) {
- fprintf(stderr,
- "Failed to alloc memory for GPT partition entries array\n");
- r = -1;
- goto EXIT;
- }
- /* Read primary GPT partititon entries array from block dev */
- r = blk_rw(fd, 0, pentries_start_offset, pentries, pentries_array_size);
- if (r)
- goto EXIT;
-
- crc = crc32(0, pentries, pentries_array_size);
- if (GET_4_BYTES(gpt_header + PARTITION_CRC_OFFSET) != crc) {
- fprintf(stderr, "Primary GPT partition entries array CRC invalid\n");
- r = -1;
- goto EXIT;
- }
-
- /* Read secondary GPT header from block dev */
- r = blk_rw(fd, 0, gpt2_header_offset, gpt_header, blk_size);
- if (r)
- goto EXIT;
-
- gpt_header_size = GET_4_BYTES(gpt_header + HEADER_SIZE_OFFSET);
- pentries_start_offset =
- GET_8_BYTES(gpt_header + PENTRIES_OFFSET) * blk_size;
-
- if (boot == BACKUP_BOOT) {
- r = gpt_boot_chain_swap(pentries, pentries + pentries_array_size,
- pentry_size);
- if (r)
- goto EXIT;
- }
-
- crc = crc32(0, pentries, pentries_array_size);
- PUT_4_BYTES(gpt_header + PARTITION_CRC_OFFSET, crc);
-
- /* header CRC is calculated with this field cleared */
- PUT_4_BYTES(gpt_header + HEADER_CRC_OFFSET, 0);
- crc = crc32(0, gpt_header, gpt_header_size);
- PUT_4_BYTES(gpt_header + HEADER_CRC_OFFSET, crc);
-
- /* Write the modified GPT header back to block dev */
- r = blk_rw(fd, 1, gpt2_header_offset, gpt_header, blk_size);
- if (!r)
- /* Write the modified GPT partititon entries array back to block dev */
- r = blk_rw(fd, 1, pentries_start_offset, pentries,
- pentries_array_size);
-
-EXIT:
- if(gpt_header)
- free(gpt_header);
- if (pentries)
- free(pentries);
- return r;
-}
-
-/**
- * ==========================================================================
- *
- * \brief Checks GPT state (header signature and CRC)
- *
- * \param [in] fd block dev file descriptor
- * \param [in] gpt GPT header to be checked
- * \param [out] state GPT header state
- *
- * \return 0 on success
- *
- * ==========================================================================
- */
-static int gpt_get_state(int fd, enum gpt_instance gpt, enum gpt_state *state)
-{
- int64_t gpt_header_offset;
- uint32_t gpt_header_size;
- uint8_t *gpt_header = NULL;
- uint32_t crc;
- uint32_t blk_size = 0;
-
- *state = GPT_OK;
-
- if (ioctl(fd, BLKSSZGET, &blk_size) != 0) {
- fprintf(stderr, "Failed to get GPT device block size: %s\n",
- strerror(errno));
- goto error;
- }
- gpt_header = (uint8_t*)malloc(blk_size);
- if (!gpt_header) {
- fprintf(stderr, "gpt_get_state:Failed to alloc memory for header\n");
- goto error;
- }
- if (gpt == PRIMARY_GPT)
- gpt_header_offset = blk_size;
- else {
- gpt_header_offset = lseek64(fd, 0, SEEK_END) - blk_size;
- if (gpt_header_offset < 0) {
- fprintf(stderr, "gpt_get_state:Seek to end of GPT part fail\n");
- goto error;
- }
- }
-
- if (blk_rw(fd, 0, gpt_header_offset, gpt_header, blk_size)) {
- fprintf(stderr, "gpt_get_state: blk_rw failed\n");
- goto error;
- }
- if (memcmp(gpt_header, GPT_SIGNATURE, sizeof(GPT_SIGNATURE)))
- *state = GPT_BAD_SIGNATURE;
- gpt_header_size = GET_4_BYTES(gpt_header + HEADER_SIZE_OFFSET);
-
- crc = GET_4_BYTES(gpt_header + HEADER_CRC_OFFSET);
- /* header CRC is calculated with this field cleared */
- PUT_4_BYTES(gpt_header + HEADER_CRC_OFFSET, 0);
- if (crc32(0, gpt_header, gpt_header_size) != crc)
- *state = GPT_BAD_CRC;
- free(gpt_header);
- return 0;
-error:
- if (gpt_header)
- free(gpt_header);
- return -1;
-}
-
-
-
-/**
- * ==========================================================================
- *
- * \brief Sets GPT header state (used to corrupt and fix GPT signature)
- *
- * \param [in] fd block dev file descriptor
- * \param [in] gpt GPT header to be checked
- * \param [in] state GPT header state to set (GPT_OK or GPT_BAD_SIGNATURE)
- *
- * \return 0 on success
- *
- * ==========================================================================
- */
-static int gpt_set_state(int fd, enum gpt_instance gpt, enum gpt_state state)
-{
- int64_t gpt_header_offset;
- uint32_t gpt_header_size;
- uint8_t *gpt_header = NULL;
- uint32_t crc;
- uint32_t blk_size = 0;
-
- if (ioctl(fd, BLKSSZGET, &blk_size) != 0) {
- fprintf(stderr, "Failed to get GPT device block size: %s\n",
- strerror(errno));
- goto error;
- }
- gpt_header = (uint8_t*)malloc(blk_size);
- if (!gpt_header) {
- fprintf(stderr, "Failed to alloc memory for gpt header\n");
- goto error;
- }
- if (gpt == PRIMARY_GPT)
- gpt_header_offset = blk_size;
- else {
- gpt_header_offset = lseek64(fd, 0, SEEK_END) - blk_size;
- if (gpt_header_offset < 0) {
- fprintf(stderr, "Failed to seek to end of GPT device\n");
- goto error;
- }
- }
- if (blk_rw(fd, 0, gpt_header_offset, gpt_header, blk_size)) {
- fprintf(stderr, "Failed to r/w gpt header\n");
- goto error;
- }
- if (state == GPT_OK)
- memcpy(gpt_header, GPT_SIGNATURE, sizeof(GPT_SIGNATURE));
- else if (state == GPT_BAD_SIGNATURE)
- *gpt_header = 0;
- else {
- fprintf(stderr, "gpt_set_state: Invalid state\n");
- goto error;
- }
-
- gpt_header_size = GET_4_BYTES(gpt_header + HEADER_SIZE_OFFSET);
-
- /* header CRC is calculated with this field cleared */
- PUT_4_BYTES(gpt_header + HEADER_CRC_OFFSET, 0);
- crc = crc32(0, gpt_header, gpt_header_size);
- PUT_4_BYTES(gpt_header + HEADER_CRC_OFFSET, crc);
-
- if (blk_rw(fd, 1, gpt_header_offset, gpt_header, blk_size)) {
- fprintf(stderr, "gpt_set_state: blk write failed\n");
- goto error;
- }
- return 0;
-error:
- if(gpt_header)
- free(gpt_header);
- return -1;
-}
-
-int get_scsi_node_from_bootdevice(const char *bootdev_path,
- char *sg_node_path,
- size_t buf_size)
-{
- char sg_dir_path[PATH_MAX] = {0};
- char real_path[PATH_MAX] = {0};
- DIR *scsi_dir = NULL;
- struct dirent *de;
- int node_found = 0;
- if (!bootdev_path || !sg_node_path) {
- fprintf(stderr, "%s : invalid argument\n",
- __func__);
- goto error;
- }
- if (readlink(bootdev_path, real_path, sizeof(real_path) - 1) < 0) {
- fprintf(stderr, "failed to resolve link for %s(%s)\n",
- bootdev_path,
- strerror(errno));
- goto error;
- }
- if(strlen(real_path) < PATH_TRUNCATE_LOC + 1){
- fprintf(stderr, "Unrecognized path :%s:\n",
- real_path);
- goto error;
- }
- //For the safe side in case there are additional partitions on
- //the XBL lun we truncate the name.
- real_path[PATH_TRUNCATE_LOC] = '\0';
- if(strlen(real_path) < LUN_NAME_START_LOC + 1){
- fprintf(stderr, "Unrecognized truncated path :%s:\n",
- real_path);
- goto error;
- }
- //This will give us /dev/block/sdb/device/scsi_generic
- //which contains a file sgY whose name gives us the path
- //to /dev/sgY which we return
- snprintf(sg_dir_path, sizeof(sg_dir_path) - 1,
- "/sys/block/%s/device/scsi_generic",
- &real_path[LUN_NAME_START_LOC]);
- scsi_dir = opendir(sg_dir_path);
- if (!scsi_dir) {
- fprintf(stderr, "%s : Failed to open %s(%s)\n",
- __func__,
- sg_dir_path,
- strerror(errno));
- goto error;
- }
- while((de = readdir(scsi_dir))) {
- if (de->d_name[0] == '.')
- continue;
- else if (!strncmp(de->d_name, "sg", 2)) {
- snprintf(sg_node_path,
- buf_size -1,
- "/dev/%s",
- de->d_name);
- fprintf(stderr, "%s:scsi generic node is :%s:\n",
- __func__,
- sg_node_path);
- node_found = 1;
- break;
- }
- }
- if(!node_found) {
- fprintf(stderr,"%s: Unable to locate scsi generic node\n",
- __func__);
- goto error;
- }
- closedir(scsi_dir);
- return 0;
-error:
- if (scsi_dir)
- closedir(scsi_dir);
- return -1;
-}
-
-int set_boot_lun(char *sg_dev, uint8_t boot_lun_id)
-{
- int fd = -1;
- int rc;
- struct ufs_ioctl_query_data *data = NULL;
- size_t ioctl_data_size = sizeof(struct ufs_ioctl_query_data) + UFS_ATTR_DATA_SIZE;
-
- data = (struct ufs_ioctl_query_data*)malloc(ioctl_data_size);
- if (!data) {
- fprintf(stderr, "%s: Failed to alloc query data struct\n",
- __func__);
- goto error;
- }
- memset(data, 0, ioctl_data_size);
- data->opcode = UPIU_QUERY_OPCODE_WRITE_ATTR;
- data->idn = QUERY_ATTR_IDN_BOOT_LU_EN;
- data->buf_size = UFS_ATTR_DATA_SIZE;
- data->buffer[0] = boot_lun_id;
- fd = open(sg_dev, O_RDWR);
- if (fd < 0) {
- fprintf(stderr, "%s: Failed to open %s(%s)\n",
- __func__,
- sg_dev,
- strerror(errno));
- goto error;
- }
- rc = ioctl(fd, UFS_IOCTL_QUERY, data);
- if (rc) {
- fprintf(stderr, "%s: UFS query ioctl failed(%s)\n",
- __func__,
- strerror(errno));
- goto error;
- }
- close(fd);
- free(data);
- return 0;
-error:
- if (fd >= 0)
- close(fd);
- if (data)
- free(data);
- return -1;
-}
-
-//Swtich betwieen using either the primary or the backup
-//boot LUN for boot. This is required since UFS boot partitions
-//cannot have a backup GPT which is what we use for failsafe
-//updates of the other 'critical' partitions. This function will
-//not be invoked for emmc targets and on UFS targets is only required
-//to be invoked for XBL.
-//
-//The algorithm to do this is as follows:
-//- Find the real block device(eg: /dev/block/sdb) that corresponds
-// to the /dev/block/bootdevice/by-name/xbl(bak) symlink
-//
-//- Once we have the block device 'node' name(sdb in the above example)
-// use this node to to locate the scsi generic device that represents
-// it by checking the file /sys/block/sdb/device/scsi_generic/sgY
-//
-//- Once we locate sgY we call the query ioctl on /dev/sgy to switch
-//the boot lun to either LUNA or LUNB
-int gpt_utils_set_xbl_boot_partition(enum boot_chain chain)
-{
- struct stat st;
- ///sys/block/sdX/device/scsi_generic/
- char sg_dev_node[PATH_MAX] = {0};
- uint8_t boot_lun_id = 0;
- const char *boot_dev = NULL;
-
- if (chain == BACKUP_BOOT) {
- boot_lun_id = BOOT_LUN_B_ID;
- if (!stat(XBL_BACKUP, &st))
- boot_dev = XBL_BACKUP;
- else if (!stat(XBL_AB_SECONDARY, &st))
- boot_dev = XBL_AB_SECONDARY;
- else {
- fprintf(stderr, "%s: Failed to locate secondary xbl\n",
- __func__);
- goto error;
- }
- } else if (chain == NORMAL_BOOT) {
- boot_lun_id = BOOT_LUN_A_ID;
- if (!stat(XBL_PRIMARY, &st))
- boot_dev = XBL_PRIMARY;
- else if (!stat(XBL_AB_PRIMARY, &st))
- boot_dev = XBL_AB_PRIMARY;
- else {
- fprintf(stderr, "%s: Failed to locate primary xbl\n",
- __func__);
- goto error;
- }
- } else {
- fprintf(stderr, "%s: Invalid boot chain id\n", __func__);
- goto error;
- }
- //We need either both xbl and xblbak or both xbl_a and xbl_b to exist at
- //the same time. If not the current configuration is invalid.
- if((stat(XBL_PRIMARY, &st) ||
- stat(XBL_BACKUP, &st)) &&
- (stat(XBL_AB_PRIMARY, &st) ||
- stat(XBL_AB_SECONDARY, &st))) {
- fprintf(stderr, "%s:primary/secondary XBL prt not found(%s)\n",
- __func__,
- strerror(errno));
- goto error;
- }
- fprintf(stderr, "%s: setting %s lun as boot lun\n",
- __func__,
- boot_dev);
- if (get_scsi_node_from_bootdevice(boot_dev,
- sg_dev_node,
- sizeof(sg_dev_node))) {
- fprintf(stderr, "%s: Failed to get scsi node path for xblbak\n",
- __func__);
- goto error;
- }
- if (set_boot_lun(sg_dev_node, boot_lun_id)) {
- fprintf(stderr, "%s: Failed to set xblbak as boot partition\n",
- __func__);
- goto error;
- }
- return 0;
-error:
- return -1;
-}
-
-int gpt_utils_is_ufs_device()
-{
- char bootdevice[PROPERTY_VALUE_MAX] = {0};
- property_get("ro.boot.bootdevice", bootdevice, "N/A");
- if (strlen(bootdevice) < strlen(".ufshc") + 1)
- return 0;
- return (!strncmp(&bootdevice[strlen(bootdevice) - strlen(".ufshc")],
- ".ufshc",
- sizeof(".ufshc")));
-}
-//dev_path is the path to the block device that contains the GPT image that
-//needs to be updated. This would be the device which holds one or more critical
-//boot partitions and their backups. In the case of EMMC this function would
-//be invoked only once on /dev/block/mmcblk1 since it holds the GPT image
-//containing all the partitions For UFS devices it could potentially be
-//invoked multiple times, once for each LUN containing critical image(s) and
-//their backups
-int prepare_partitions(enum boot_update_stage stage, const char *dev_path)
-{
- int r = 0;
- int fd = -1;
- int is_ufs = gpt_utils_is_ufs_device();
- enum gpt_state gpt_prim, gpt_second;
- enum boot_update_stage internal_stage;
- struct stat xbl_partition_stat;
-
- if (!dev_path) {
- fprintf(stderr, "%s: Invalid dev_path\n",
- __func__);
- r = -1;
- goto EXIT;
- }
- fd = open(dev_path, O_RDWR);
- if (fd < 0) {
- fprintf(stderr, "%s: Opening '%s' failed: %s\n",
- __func__,
- BLK_DEV_FILE,
- strerror(errno));
- r = -1;
- goto EXIT;
- }
- r = gpt_get_state(fd, PRIMARY_GPT, &gpt_prim) ||
- gpt_get_state(fd, SECONDARY_GPT, &gpt_second);
- if (r) {
- fprintf(stderr, "%s: Getting GPT headers state failed\n",
- __func__);
- goto EXIT;
- }
-
- /* These 2 combinations are unexpected and unacceptable */
- if (gpt_prim == GPT_BAD_CRC || gpt_second == GPT_BAD_CRC) {
- fprintf(stderr, "%s: GPT headers CRC corruption detected, aborting\n",
- __func__);
- r = -1;
- goto EXIT;
- }
- if (gpt_prim == GPT_BAD_SIGNATURE && gpt_second == GPT_BAD_SIGNATURE) {
- fprintf(stderr, "%s: Both GPT headers corrupted, aborting\n",
- __func__);
- r = -1;
- goto EXIT;
- }
-
- /* Check internal update stage according GPT headers' state */
- if (gpt_prim == GPT_OK && gpt_second == GPT_OK)
- internal_stage = UPDATE_MAIN;
- else if (gpt_prim == GPT_BAD_SIGNATURE)
- internal_stage = UPDATE_BACKUP;
- else if (gpt_second == GPT_BAD_SIGNATURE)
- internal_stage = UPDATE_FINALIZE;
- else {
- fprintf(stderr, "%s: Abnormal GPTs state: primary (%d), secondary (%d), "
- "aborting\n", __func__, gpt_prim, gpt_second);
- r = -1;
- goto EXIT;
- }
-
- /* Stage already set - ready for update, exitting */
- if ((int) stage == (int) internal_stage - 1)
- goto EXIT;
- /* Unexpected stage given */
- if (stage != internal_stage) {
- r = -1;
- goto EXIT;
- }
-
- switch (stage) {
- case UPDATE_MAIN:
- if (is_ufs) {
- if(stat(XBL_PRIMARY, &xbl_partition_stat)||
- stat(XBL_BACKUP, &xbl_partition_stat)){
- //Non fatal error. Just means this target does not
- //use XBL but relies on sbl whose update is handled
- //by the normal methods.
- fprintf(stderr, "%s: xbl part not found(%s).Assuming sbl in use\n",
- __func__,
- strerror(errno));
- } else {
- //Switch the boot lun so that backup boot LUN is used
- r = gpt_utils_set_xbl_boot_partition(BACKUP_BOOT);
- if(r){
- fprintf(stderr, "%s: Failed to set xbl backup partition as boot\n",
- __func__);
- goto EXIT;
- }
- }
- }
- //Fix up the backup GPT table so that it actually points to
- //the backup copy of the boot critical images
- fprintf(stderr, "%s: Preparing for primary partition update\n",
- __func__);
- r = gpt2_set_boot_chain(fd, BACKUP_BOOT);
- if (r) {
- if (r < 0)
- fprintf(stderr,
- "%s: Setting secondary GPT to backup boot failed\n",
- __func__);
- /* No backup partitions - do not corrupt GPT, do not flag error */
- else
- r = 0;
- goto EXIT;
- }
- //corrupt the primary GPT so that the backup(which now points to
- //the backup boot partitions is used)
- r = gpt_set_state(fd, PRIMARY_GPT, GPT_BAD_SIGNATURE);
- if (r) {
- fprintf(stderr, "%s: Corrupting primary GPT header failed\n",
- __func__);
- goto EXIT;
- }
- break;
- case UPDATE_BACKUP:
- if (is_ufs) {
- if(stat(XBL_PRIMARY, &xbl_partition_stat)||
- stat(XBL_BACKUP, &xbl_partition_stat)){
- //Non fatal error. Just means this target does not
- //use XBL but relies on sbl whose update is handled
- //by the normal methods.
- fprintf(stderr, "%s: xbl part not found(%s).Assuming sbl in use\n",
- __func__,
- strerror(errno));
- } else {
- //Switch the boot lun so that backup boot LUN is used
- r = gpt_utils_set_xbl_boot_partition(NORMAL_BOOT);
- if(r) {
- fprintf(stderr, "%s: Failed to set xbl backup partition as boot\n",
- __func__);
- goto EXIT;
- }
- }
- }
- //Fix the primary GPT header so that is used
- fprintf(stderr, "%s: Preparing for backup partition update\n",
- __func__);
- r = gpt_set_state(fd, PRIMARY_GPT, GPT_OK);
- if (r) {
- fprintf(stderr, "%s: Fixing primary GPT header failed\n",
- __func__);
- goto EXIT;
- }
- //Corrupt the scondary GPT header
- r = gpt_set_state(fd, SECONDARY_GPT, GPT_BAD_SIGNATURE);
- if (r) {
- fprintf(stderr, "%s: Corrupting secondary GPT header failed\n",
- __func__);
- goto EXIT;
- }
- break;
- case UPDATE_FINALIZE:
- //Undo the changes we had made in the UPDATE_MAIN stage so that the
- //primary/backup GPT headers once again point to the same set of
- //partitions
- fprintf(stderr, "%s: Finalizing partitions\n",
- __func__);
- r = gpt2_set_boot_chain(fd, NORMAL_BOOT);
- if (r < 0) {
- fprintf(stderr, "%s: Setting secondary GPT to normal boot failed\n",
- __func__);
- goto EXIT;
- }
-
- r = gpt_set_state(fd, SECONDARY_GPT, GPT_OK);
- if (r) {
- fprintf(stderr, "%s: Fixing secondary GPT header failed\n",
- __func__);
- goto EXIT;
- }
- break;
- default:;
- }
-
-EXIT:
- if (fd >= 0) {
- fsync(fd);
- close(fd);
- }
- return r;
-}
-
-int add_lun_to_update_list(char *lun_path, struct update_data *dat)
-{
- uint32_t i = 0;
- struct stat st;
- if (!lun_path || !dat){
- fprintf(stderr, "%s: Invalid data",
- __func__);
- return -1;
- }
- if (stat(lun_path, &st)) {
- fprintf(stderr, "%s: Unable to access %s. Skipping adding to list",
- __func__,
- lun_path);
- return -1;
- }
- if (dat->num_valid_entries == 0) {
- fprintf(stderr, "%s: Copying %s into lun_list[%d]\n",
- __func__,
- lun_path,
- i);
- strlcpy(dat->lun_list[0], lun_path,
- PATH_MAX * sizeof(char));
- dat->num_valid_entries = 1;
- } else {
- for (i = 0; (i < dat->num_valid_entries) &&
- (dat->num_valid_entries < MAX_LUNS - 1); i++) {
- //Check if the current LUN is not already part
- //of the lun list
- if (!strncmp(lun_path,dat->lun_list[i],
- strlen(dat->lun_list[i]))) {
- //LUN already in list..Return
- return 0;
- }
- }
- fprintf(stderr, "%s: Copying %s into lun_list[%d]\n",
- __func__,
- lun_path,
- dat->num_valid_entries);
- //Add LUN path lun list
- strlcpy(dat->lun_list[dat->num_valid_entries], lun_path,
- PATH_MAX * sizeof(char));
- dat->num_valid_entries++;
- }
- return 0;
-}
-
-int prepare_boot_update(enum boot_update_stage stage)
-{
- int is_ufs = gpt_utils_is_ufs_device();
- struct stat ufs_dir_stat;
- struct update_data data;
- int rcode = 0;
- uint32_t i = 0;
- int is_error = 0;
- const char ptn_swap_list[][MAX_GPT_NAME_SIZE] = { PTN_SWAP_LIST };
- //Holds /dev/block/bootdevice/by-name/*bak entry
- char buf[PATH_MAX] = {0};
- //Holds the resolved path of the symlink stored in buf
- char real_path[PATH_MAX] = {0};
-
- if (!is_ufs) {
- //emmc device. Just pass in path to mmcblk0
- return prepare_partitions(stage, BLK_DEV_FILE);
- } else {
- //Now we need to find the list of LUNs over
- //which the boot critical images are spread
- //and set them up for failsafe updates.To do
- //this we find out where the symlinks for the
- //each of the paths under
- ///dev/block/bootdevice/by-name/PTN_SWAP_LIST
- //actually point to.
- fprintf(stderr, "%s: Running on a UFS device\n",
- __func__);
- memset(&data, '\0', sizeof(struct update_data));
- for (i=0; i < ARRAY_SIZE(ptn_swap_list); i++) {
- //XBL on UFS does not follow the convention
- //of being loaded based on well known GUID'S.
- //We take care of switching the UFS boot LUN
- //explicitly later on.
- if (!strncmp(ptn_swap_list[i],
- PTN_XBL,
- strlen(PTN_XBL)))
- continue;
- snprintf(buf, sizeof(buf),
- "%s/%sbak",
- BOOT_DEV_DIR,
- ptn_swap_list[i]);
- if (stat(buf, &ufs_dir_stat)) {
- continue;
- }
- if (readlink(buf, real_path, sizeof(real_path) - 1) < 0)
- {
- fprintf(stderr, "%s: readlink error. Skipping %s",
- __func__,
- strerror(errno));
- } else {
- if(strlen(real_path) < PATH_TRUNCATE_LOC + 1){
- fprintf(stderr, "Unknown path.Skipping :%s:\n",
- real_path);
- } else {
- real_path[PATH_TRUNCATE_LOC] = '\0';
- add_lun_to_update_list(real_path, &data);
- }
- }
- memset(buf, '\0', sizeof(buf));
- memset(real_path, '\0', sizeof(real_path));
- }
- for (i=0; i < data.num_valid_entries; i++) {
- fprintf(stderr, "%s: Preparing %s for update stage %d\n",
- __func__,
- data.lun_list[i],
- stage);
- rcode = prepare_partitions(stage, data.lun_list[i]);
- if (rcode != 0)
- {
- fprintf(stderr, "%s: Failed to prepare %s.Continuing..\n",
- __func__,
- data.lun_list[i]);
- is_error = 1;
- }
- }
- }
- if (is_error)
- return -1;
- return 0;
-}
-
-//Given a parttion name(eg: rpm) get the path to the block device that
-//represents the GPT disk the partition resides on. In the case of emmc it
-//would be the default emmc dev(/dev/block/mmcblk0). In the case of UFS we look
-//through the /dev/block/bootdevice/by-name/ tree for partname, and resolve
-//the path to the LUN from there.
-static int get_dev_path_from_partition_name(const char *partname,
- char *buf,
- size_t buflen)
-{
- struct stat st;
- char path[PATH_MAX] = {0};
- if (!partname || !buf || buflen < ((PATH_TRUNCATE_LOC) + 1)) {
- ALOGE("%s: Invalid argument", __func__);
- goto error;
- }
- if (gpt_utils_is_ufs_device()) {
- //Need to find the lun that holds partition partname
- snprintf(path, sizeof(path),
- "%s/%s",
- BOOT_DEV_DIR,
- partname);
- if (stat(path, &st)) {
- goto error;
- }
- if (readlink(path, buf, buflen) < 0)
- {
- goto error;
- } else {
- buf[PATH_TRUNCATE_LOC] = '\0';
- }
- } else {
- snprintf(buf, buflen, "/dev/block/mmcblk0");
- }
- return 0;
-
-error:
- return -1;
-}
-
-int gpt_utils_get_partition_map(vector<string>& ptn_list,
- map<string, vector<string>>& partition_map) {
- char devpath[PATH_MAX] = {'\0'};
- map<string, vector<string>>::iterator it;
- if (ptn_list.size() < 1) {
- fprintf(stderr, "%s: Invalid ptn list\n", __func__);
- return -1;
- }
- //Go through the passed in list
- for (uint32_t i = 0; i < ptn_list.size(); i++)
- {
- //Key in the map is the path to the device that holds the
- //partition
- if (get_dev_path_from_partition_name(ptn_list[i].c_str(),
- devpath,
- sizeof(devpath))) {
- //Not necessarily an error. The partition may just
- //not be present.
- continue;
- }
- string path = devpath;
- it = partition_map.find(path);
- if (it != partition_map.end()) {
- it->second.push_back(ptn_list[i]);
- } else {
- vector<string> str_vec;
- str_vec.push_back( ptn_list[i]);
- partition_map.insert(pair<string, vector<string>>
- (path, str_vec));
- }
- memset(devpath, '\0', sizeof(devpath));
- }
- return 0;
-}
-
-//Get the block size of the disk represented by decsriptor fd
-static uint32_t gpt_get_block_size(int fd)
-{
- uint32_t block_size = 0;
- if (fd < 0) {
- ALOGE("%s: invalid descriptor",
- __func__);
- goto error;
- }
- if (ioctl(fd, BLKSSZGET, &block_size) != 0) {
- ALOGE("%s: Failed to get GPT dev block size : %s",
- __func__,
- strerror(errno));
- goto error;
- }
- return block_size;
-error:
- return 0;
-}
-
-//Write the GPT header present in the passed in buffer back to the
-//disk represented by fd
-static int gpt_set_header(uint8_t *gpt_header, int fd,
- enum gpt_instance instance)
-{
- uint32_t block_size = 0;
- off_t gpt_header_offset = 0;
- if (!gpt_header || fd < 0) {
- ALOGE("%s: Invalid arguments",
- __func__);
- goto error;
- }
- block_size = gpt_get_block_size(fd);
- ALOGI("%s: Block size is : %d", __func__, block_size);
- if (block_size == 0) {
- ALOGE("%s: Failed to get block size", __func__);
- goto error;
- }
- if (instance == PRIMARY_GPT)
- gpt_header_offset = block_size;
- else
- gpt_header_offset = lseek64(fd, 0, SEEK_END) - block_size;
- if (gpt_header_offset <= 0) {
- ALOGE("%s: Failed to get gpt header offset",__func__);
- goto error;
- }
- ALOGI("%s: Writing back header to offset %ld", __func__,
- gpt_header_offset);
- if (blk_rw(fd, 1, gpt_header_offset, gpt_header, block_size)) {
- ALOGE("%s: Failed to write back GPT header", __func__);
- goto error;
- }
- return 0;
-error:
- return -1;
-}
-
-//Read out the GPT header for the disk that contains the partition partname
-static uint8_t* gpt_get_header(const char *partname, enum gpt_instance instance)
-{
- uint8_t* hdr = NULL;
- char devpath[PATH_MAX] = {0};
- int64_t hdr_offset = 0;
- uint32_t block_size = 0;
- int fd = -1;
- if (!partname) {
- ALOGE("%s: Invalid partition name", __func__);
- goto error;
- }
- if (get_dev_path_from_partition_name(partname, devpath, sizeof(devpath))
- != 0) {
- ALOGE("%s: Failed to resolve path for %s",
- __func__,
- partname);
- goto error;
- }
- fd = open(devpath, O_RDWR);
- if (fd < 0) {
- ALOGE("%s: Failed to open %s : %s",
- __func__,
- devpath,
- strerror(errno));
- goto error;
- }
- block_size = gpt_get_block_size(fd);
- if (block_size == 0)
- {
- ALOGE("%s: Failed to get gpt block size for %s",
- __func__,
- partname);
- goto error;
- }
-
- hdr = (uint8_t*)malloc(block_size);
- if (!hdr) {
- ALOGE("%s: Failed to allocate memory for gpt header",
- __func__);
- }
- if (instance == PRIMARY_GPT)
- hdr_offset = block_size;
- else {
- hdr_offset = lseek64(fd, 0, SEEK_END) - block_size;
- }
- if (hdr_offset < 0) {
- ALOGE("%s: Failed to get gpt header offset",
- __func__);
- goto error;
- }
- if (blk_rw(fd, 0, hdr_offset, hdr, block_size)) {
- ALOGE("%s: Failed to read GPT header from device",
- __func__);
- goto error;
- }
- close(fd);
- return hdr;
-error:
- if (fd >= 0)
- close(fd);
- if (hdr)
- free(hdr);
- return NULL;
-}
-
-//Returns the partition entry array based on the
-//passed in buffer which contains the gpt header.
-//The fd here is the descriptor for the 'disk' which
-//holds the partition
-static uint8_t* gpt_get_pentry_arr(uint8_t *hdr, int fd)
-{
- uint64_t pentries_start = 0;
- uint32_t pentry_size = 0;
- uint32_t block_size = 0;
- uint32_t pentries_arr_size = 0;
- uint8_t *pentry_arr = NULL;
- int rc = 0;
- if (!hdr) {
- ALOGE("%s: Invalid header", __func__);
- goto error;
- }
- if (fd < 0) {
- ALOGE("%s: Invalid fd", __func__);
- goto error;
- }
- block_size = gpt_get_block_size(fd);
- if (!block_size) {
- ALOGE("%s: Failed to get gpt block size for",
- __func__);
- goto error;
- }
- pentries_start = GET_8_BYTES(hdr + PENTRIES_OFFSET) * block_size;
- pentry_size = GET_4_BYTES(hdr + PENTRY_SIZE_OFFSET);
- pentries_arr_size =
- GET_4_BYTES(hdr + PARTITION_COUNT_OFFSET) * pentry_size;
- pentry_arr = (uint8_t*)calloc(1, pentries_arr_size);
- if (!pentry_arr) {
- ALOGE("%s: Failed to allocate memory for partition array",
- __func__);
- goto error;
- }
- rc = blk_rw(fd, 0,
- pentries_start,
- pentry_arr,
- pentries_arr_size);
- if (rc) {
- ALOGE("%s: Failed to read partition entry array",
- __func__);
- goto error;
- }
- return pentry_arr;
-error:
- if (pentry_arr)
- free(pentry_arr);
- return NULL;
-}
-
-static int gpt_set_pentry_arr(uint8_t *hdr, int fd, uint8_t* arr)
-{
- uint32_t block_size = 0;
- uint64_t pentries_start = 0;
- uint32_t pentry_size = 0;
- uint32_t pentries_arr_size = 0;
- int rc = 0;
- if (!hdr || fd < 0 || !arr) {
- ALOGE("%s: Invalid argument", __func__);
- goto error;
- }
- block_size = gpt_get_block_size(fd);
- if (!block_size) {
- ALOGE("%s: Failed to get gpt block size for",
- __func__);
- goto error;
- }
- ALOGI("%s : Block size is %d", __func__, block_size);
- pentries_start = GET_8_BYTES(hdr + PENTRIES_OFFSET) * block_size;
- pentry_size = GET_4_BYTES(hdr + PENTRY_SIZE_OFFSET);
- pentries_arr_size =
- GET_4_BYTES(hdr + PARTITION_COUNT_OFFSET) * pentry_size;
- ALOGI("%s: Writing partition entry array of size %d to offset %" PRIu64,
- __func__,
- pentries_arr_size,
- pentries_start);
- rc = blk_rw(fd, 1,
- pentries_start,
- arr,
- pentries_arr_size);
- if (rc) {
- ALOGE("%s: Failed to read partition entry array",
- __func__);
- goto error;
- }
- return 0;
-error:
- return -1;
-}
-
-
-
-//Allocate a handle used by calls to the "gpt_disk" api's
-struct gpt_disk * gpt_disk_alloc()
-{
- struct gpt_disk *disk;
- disk = (struct gpt_disk *)malloc(sizeof(struct gpt_disk));
- if (!disk) {
- ALOGE("%s: Failed to allocate memory", __func__);
- goto end;
- }
- memset(disk, 0, sizeof(struct gpt_disk));
-end:
- return disk;
-}
-
-//Free previously allocated/initialized handle
-void gpt_disk_free(struct gpt_disk *disk)
-{
- if (!disk)
- return;
- if (disk->hdr)
- free(disk->hdr);
- if (disk->hdr_bak)
- free(disk->hdr_bak);
- if (disk->pentry_arr)
- free(disk->pentry_arr);
- if (disk->pentry_arr_bak)
- free(disk->pentry_arr_bak);
- free(disk);
- return;
-}
-
-//fills up the passed in gpt_disk struct with information about the
-//disk represented by path dev. Returns 0 on success and -1 on error.
-int gpt_disk_get_disk_info(const char *dev, struct gpt_disk *dsk)
-{
- struct gpt_disk *disk = NULL;
- int fd = -1;
- uint32_t gpt_header_size = 0;
-
- if (!dsk || !dev) {
- ALOGE("%s: Invalid arguments", __func__);
- goto error;
- }
- disk = dsk;
- disk->hdr = gpt_get_header(dev, PRIMARY_GPT);
- if (!disk->hdr) {
- ALOGE("%s: Failed to get primary header", __func__);
- goto error;
- }
- gpt_header_size = GET_4_BYTES(disk->hdr + HEADER_SIZE_OFFSET);
- disk->hdr_crc = crc32(0, disk->hdr, gpt_header_size);
- disk->hdr_bak = gpt_get_header(dev, PRIMARY_GPT);
- if (!disk->hdr_bak) {
- ALOGE("%s: Failed to get backup header", __func__);
- goto error;
- }
- disk->hdr_bak_crc = crc32(0, disk->hdr_bak, gpt_header_size);
-
- //Descriptor for the block device. We will use this for further
- //modifications to the partition table
- if (get_dev_path_from_partition_name(dev,
- disk->devpath,
- sizeof(disk->devpath)) != 0) {
- ALOGE("%s: Failed to resolve path for %s",
- __func__,
- dev);
- goto error;
- }
- fd = open(disk->devpath, O_RDWR);
- if (fd < 0) {
- ALOGE("%s: Failed to open %s: %s",
- __func__,
- disk->devpath,
- strerror(errno));
- goto error;
- }
- disk->pentry_arr = gpt_get_pentry_arr(disk->hdr, fd);
- if (!disk->pentry_arr) {
- ALOGE("%s: Failed to obtain partition entry array",
- __func__);
- goto error;
- }
- disk->pentry_arr_bak = gpt_get_pentry_arr(disk->hdr_bak, fd);
- if (!disk->pentry_arr_bak) {
- ALOGE("%s: Failed to obtain backup partition entry array",
- __func__);
- goto error;
- }
- disk->pentry_size = GET_4_BYTES(disk->hdr + PENTRY_SIZE_OFFSET);
- disk->pentry_arr_size =
- GET_4_BYTES(disk->hdr + PARTITION_COUNT_OFFSET) *
- disk->pentry_size;
- disk->pentry_arr_crc = GET_4_BYTES(disk->hdr + PARTITION_CRC_OFFSET);
- disk->pentry_arr_bak_crc = GET_4_BYTES(disk->hdr_bak +
- PARTITION_CRC_OFFSET);
- disk->block_size = gpt_get_block_size(fd);
- close(fd);
- disk->is_initialized = GPT_DISK_INIT_MAGIC;
- return 0;
-error:
- if (fd >= 0)
- close(fd);
- return -1;
-}
-
-//Get pointer to partition entry from a allocated gpt_disk structure
-uint8_t* gpt_disk_get_pentry(struct gpt_disk *disk,
- const char *partname,
- enum gpt_instance instance)
-{
- uint8_t *ptn_arr = NULL;
- if (!disk || !partname || disk->is_initialized != GPT_DISK_INIT_MAGIC) {
- ALOGE("%s: Invalid argument",__func__);
- goto error;
- }
- ptn_arr = (instance == PRIMARY_GPT) ?
- disk->pentry_arr : disk->pentry_arr_bak;
- return (gpt_pentry_seek(partname, ptn_arr,
- ptn_arr + disk->pentry_arr_size ,
- disk->pentry_size));
-error:
- return NULL;
-}
-
-//Update CRC values for the various components of the gpt_disk
-//structure. This function should be called after any of the fields
-//have been updated before the structure contents are written back to
-//disk.
-int gpt_disk_update_crc(struct gpt_disk *disk)
-{
- uint32_t gpt_header_size = 0;
- if (!disk || (disk->is_initialized != GPT_DISK_INIT_MAGIC)) {
- ALOGE("%s: invalid argument", __func__);
- goto error;
- }
- //Recalculate the CRC of the primary partiton array
- disk->pentry_arr_crc = crc32(0,
- disk->pentry_arr,
- disk->pentry_arr_size);
- //Recalculate the CRC of the backup partition array
- disk->pentry_arr_bak_crc = crc32(0,
- disk->pentry_arr_bak,
- disk->pentry_arr_size);
- //Update the partition CRC value in the primary GPT header
- PUT_4_BYTES(disk->hdr + PARTITION_CRC_OFFSET, disk->pentry_arr_crc);
- //Update the partition CRC value in the backup GPT header
- PUT_4_BYTES(disk->hdr_bak + PARTITION_CRC_OFFSET,
- disk->pentry_arr_bak_crc);
- //Update the CRC value of the primary header
- gpt_header_size = GET_4_BYTES(disk->hdr + HEADER_SIZE_OFFSET);
- //Header CRC is calculated with its own CRC field set to 0
- PUT_4_BYTES(disk->hdr + HEADER_CRC_OFFSET, 0);
- PUT_4_BYTES(disk->hdr_bak + HEADER_CRC_OFFSET, 0);
- disk->hdr_crc = crc32(0, disk->hdr, gpt_header_size);
- disk->hdr_bak_crc = crc32(0, disk->hdr_bak, gpt_header_size);
- PUT_4_BYTES(disk->hdr + HEADER_CRC_OFFSET, disk->hdr_crc);
- PUT_4_BYTES(disk->hdr_bak + HEADER_CRC_OFFSET, disk->hdr_bak_crc);
- return 0;
-error:
- return -1;
-}
-
-//Write the contents of struct gpt_disk back to the actual disk
-int gpt_disk_commit(struct gpt_disk *disk)
-{
- int fd = -1;
- if (!disk || (disk->is_initialized != GPT_DISK_INIT_MAGIC)){
- ALOGE("%s: Invalid args", __func__);
- goto error;
- }
- fd = open(disk->devpath, O_RDWR);
- if (fd < 0) {
- ALOGE("%s: Failed to open %s: %s",
- __func__,
- disk->devpath,
- strerror(errno));
- goto error;
- }
- ALOGI("%s: Writing back primary GPT header", __func__);
- //Write the primary header
- if(gpt_set_header(disk->hdr, fd, PRIMARY_GPT) != 0) {
- ALOGE("%s: Failed to update primary GPT header",
- __func__);
- goto error;
- }
- ALOGI("%s: Writing back primary partition array", __func__);
- //Write back the primary partition array
- if (gpt_set_pentry_arr(disk->hdr, fd, disk->pentry_arr)) {
- ALOGE("%s: Failed to write primary GPT partition arr",
- __func__);
- goto error;
- }
- fsync(fd);
- close(fd);
- return 0;
-error:
- if (fd >= 0)
- close(fd);
- return -1;
-}
diff --git a/gpt-utils/gpt-utils.h b/gpt-utils/gpt-utils.h
deleted file mode 100644
index 3a93ab34..00000000
--- a/gpt-utils/gpt-utils.h
+++ /dev/null
@@ -1,197 +0,0 @@
-/*
- * Copyright (c) 2013, The Linux Foundation. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- * * Neither the name of The Linux Foundation nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
- * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
- * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef __GPT_UTILS_H__
-#define __GPT_UTILS_H__
-#include <vector>
-#include <string>
-#include <map>
-#ifdef __cplusplus
-extern "C" {
-#endif
-#include <unistd.h>
-#include <stdlib.h>
-/******************************************************************************
- * GPT HEADER DEFINES
- ******************************************************************************/
-#define GPT_SIGNATURE "EFI PART"
-#define HEADER_SIZE_OFFSET 12
-#define HEADER_CRC_OFFSET 16
-#define PRIMARY_HEADER_OFFSET 24
-#define BACKUP_HEADER_OFFSET 32
-#define FIRST_USABLE_LBA_OFFSET 40
-#define LAST_USABLE_LBA_OFFSET 48
-#define PENTRIES_OFFSET 72
-#define PARTITION_COUNT_OFFSET 80
-#define PENTRY_SIZE_OFFSET 84
-#define PARTITION_CRC_OFFSET 88
-
-#define TYPE_GUID_OFFSET 0
-#define TYPE_GUID_SIZE 16
-#define PTN_ENTRY_SIZE 128
-#define UNIQUE_GUID_OFFSET 16
-#define FIRST_LBA_OFFSET 32
-#define LAST_LBA_OFFSET 40
-#define ATTRIBUTE_FLAG_OFFSET 48
-#define PARTITION_NAME_OFFSET 56
-#define MAX_GPT_NAME_SIZE 72
-
-/******************************************************************************
- * AB RELATED DEFINES
- ******************************************************************************/
-//Bit 48 onwords in the attribute field are the ones where we are allowed to
-//store our AB attributes.
-#define AB_FLAG_OFFSET (ATTRIBUTE_FLAG_OFFSET + 6)
-#define GPT_DISK_INIT_MAGIC 0xABCD
-#define AB_PARTITION_ATTR_SLOT_ACTIVE (0x1<<2)
-#define AB_PARTITION_ATTR_BOOT_SUCCESSFUL (0x1<<6)
-#define AB_PARTITION_ATTR_UNBOOTABLE (0x1<<7)
-#define AB_SLOT_ACTIVE_VAL 0xF
-#define AB_SLOT_INACTIVE_VAL 0x0
-#define AB_SLOT_ACTIVE 1
-#define AB_SLOT_INACTIVE 0
-#define AB_SLOT_A_SUFFIX "_a"
-#define AB_SLOT_B_SUFFIX "_b"
-#define PTN_XBL "xbl"
-#define PTN_SWAP_LIST PTN_XBL, \
- "abl", "aop", "cmnlib", "cmnlib64", "devcfg", \
- "dtbo", "hyp", "keymaster", "qupfw", "storsec", \
- "tz", "vbmeta", "xbl_config"
-
-#define AB_PTN_LIST PTN_SWAP_LIST, "boot", "system", "vendor", "modem", \
- "system_ext", "product"
-#define BOOT_DEV_DIR "/dev/block/bootdevice/by-name"
-
-/******************************************************************************
- * HELPER MACROS
- ******************************************************************************/
-#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
-/******************************************************************************
- * TYPES
- ******************************************************************************/
-enum boot_update_stage {
- UPDATE_MAIN = 1,
- UPDATE_BACKUP,
- UPDATE_FINALIZE
-};
-
-enum gpt_instance {
- PRIMARY_GPT = 0,
- SECONDARY_GPT
-};
-
-enum boot_chain {
- NORMAL_BOOT = 0,
- BACKUP_BOOT
-};
-
-struct gpt_disk {
- //GPT primary header
- uint8_t *hdr;
- //primary header crc
- uint32_t hdr_crc;
- //GPT backup header
- uint8_t *hdr_bak;
- //backup header crc
- uint32_t hdr_bak_crc;
- //Partition entries array
- uint8_t *pentry_arr;
- //Partition entries array for backup table
- uint8_t *pentry_arr_bak;
- //Size of the pentry array
- uint32_t pentry_arr_size;
- //Size of each element in the pentry array
- uint32_t pentry_size;
- //CRC of the partition entry array
- uint32_t pentry_arr_crc;
- //CRC of the backup partition entry array
- uint32_t pentry_arr_bak_crc;
- //Path to block dev representing the disk
- char devpath[PATH_MAX];
- //Block size of disk
- uint32_t block_size;
- uint32_t is_initialized;
-};
-
-/******************************************************************************
- * FUNCTION PROTOTYPES
- ******************************************************************************/
-int prepare_boot_update(enum boot_update_stage stage);
-//GPT disk methods
-struct gpt_disk* gpt_disk_alloc();
-//Free previously allocated gpt_disk struct
-void gpt_disk_free(struct gpt_disk *disk);
-//Get the details of the disk holding the partition whose name
-//is passed in via dev
-int gpt_disk_get_disk_info(const char *dev, struct gpt_disk *disk);
-
-//Get pointer to partition entry from a allocated gpt_disk structure
-uint8_t* gpt_disk_get_pentry(struct gpt_disk *disk,
- const char *partname,
- enum gpt_instance instance);
-
-//Update the crc fields of the modified disk structure
-int gpt_disk_update_crc(struct gpt_disk *disk);
-
-//Write the contents of struct gpt_disk back to the actual disk
-int gpt_disk_commit(struct gpt_disk *disk);
-
-//Return if the current device is UFS based or not
-int gpt_utils_is_ufs_device();
-
-//Swtich betwieen using either the primary or the backup
-//boot LUN for boot. This is required since UFS boot partitions
-//cannot have a backup GPT which is what we use for failsafe
-//updates of the other 'critical' partitions. This function will
-//not be invoked for emmc targets and on UFS targets is only required
-//to be invoked for XBL.
-//
-//The algorithm to do this is as follows:
-//- Find the real block device(eg: /dev/block/sdb) that corresponds
-// to the /dev/block/bootdevice/by-name/xbl(bak) symlink
-//
-//- Once we have the block device 'node' name(sdb in the above example)
-// use this node to to locate the scsi generic device that represents
-// it by checking the file /sys/block/sdb/device/scsi_generic/sgY
-//
-//- Once we locate sgY we call the query ioctl on /dev/sgy to switch
-//the boot lun to either LUNA or LUNB
-int gpt_utils_set_xbl_boot_partition(enum boot_chain chain);
-
-//Given a vector of partition names as a input and a reference to a map,
-//populate the map to indicate which physical disk each of the partitions
-//sits on. The key in the map is the path to the block device where the
-//partition lies and the value is a vector of strings indicating which of
-//the passed in partition names sits on that device.
-int gpt_utils_get_partition_map(std::vector<std::string>& partition_list,
- std::map<std::string,std::vector<std::string>>& partition_map);
-#ifdef __cplusplus
-}
-#endif
-#endif /* __GPT_UTILS_H__ */
diff --git a/json-c/AUTHORS b/json-c/AUTHORS
deleted file mode 100644
index b389989c..00000000
--- a/json-c/AUTHORS
+++ /dev/null
@@ -1,5 +0,0 @@
-Michael Clark <michael@metaparadigm.com>
-Jehiah Czebotar <jehiah@gmail.com>
-Eric Haszlakiewicz <hawicz+json-c@gmail.com>
-C. Watford (christopher.watford@gmail.com)
-
diff --git a/json-c/Android.configure.mk b/json-c/Android.configure.mk
deleted file mode 100644
index a6265ada..00000000
--- a/json-c/Android.configure.mk
+++ /dev/null
@@ -1,39 +0,0 @@
-# This file is the top android makefile for all sub-modules.
-
-LOCAL_PATH := $(call my-dir)
-include $(CLEAR_VARS)
-
-json_c_TOP := $(LOCAL_PATH)
-
-JSON_C_BUILT_SOURCES := Android.mk
-
-JSON_C_BUILT_SOURCES := $(patsubst %, $(abspath $(json_c_TOP))/%, $(JSON_C_BUILT_SOURCES))
-
-.PHONY: json-c-configure json-c-configure-real
-json-c-configure-real:
- echo $(JSON_C_BUILT_SOURCES)
- cd $(json_c_TOP) ; \
- $(abspath $(json_c_TOP))/autogen.sh && \
- CC="$(CONFIGURE_CC)" \
- CFLAGS="$(CONFIGURE_CFLAGS)" \
- LD=$(TARGET_LD) \
- LDFLAGS="$(CONFIGURE_LDFLAGS)" \
- CPP=$(CONFIGURE_CPP) \
- CPPFLAGS="$(CONFIGURE_CPPFLAGS)" \
- PKG_CONFIG_LIBDIR=$(CONFIGURE_PKG_CONFIG_LIBDIR) \
- PKG_CONFIG_TOP_BUILD_DIR=/ \
- ac_cv_func_malloc_0_nonnull=yes \
- ac_cv_func_realloc_0_nonnull=yes \
- $(abspath $(json_c_TOP))/$(CONFIGURE) --host=$(CONFIGURE_HOST) \
- --prefix=/system \
- && \
- for file in $(JSON_C_BUILT_SOURCES); do \
- rm -f $$file && \
- make -C $$(dirname $$file) $$(basename $$file) ; \
- done
-
-json-c-configure: json-c-configure-real
-
-PA_CONFIGURE_TARGETS += json-c-configure
-
--include $(json_c_TOP)/Android.mk
diff --git a/json-c/COPYING b/json-c/COPYING
deleted file mode 100644
index 740d1258..00000000
--- a/json-c/COPYING
+++ /dev/null
@@ -1,42 +0,0 @@
-
-Copyright (c) 2009-2012 Eric Haszlakiewicz
-
-Permission is hereby granted, free of charge, to any person obtaining a
-copy of this software and associated documentation files (the "Software"),
-to deal in the Software without restriction, including without limitation
-the rights to use, copy, modify, merge, publish, distribute, sublicense,
-and/or sell copies of the Software, and to permit persons to whom the
-Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-
-----------------------------------------------------------------
-
-Copyright (c) 2004, 2005 Metaparadigm Pte Ltd
-
-Permission is hereby granted, free of charge, to any person obtaining a
-copy of this software and associated documentation files (the "Software"),
-to deal in the Software without restriction, including without limitation
-the rights to use, copy, modify, merge, publish, distribute, sublicense,
-and/or sell copies of the Software, and to permit persons to whom the
-Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/json-c/ChangeLog b/json-c/ChangeLog
deleted file mode 100644
index 584ed1fd..00000000
--- a/json-c/ChangeLog
+++ /dev/null
@@ -1,218 +0,0 @@
-
-NEXT.VERSION
-
- ...nothing yet...
-
-0.12
-
- * Address security issues:
- * CVE-2013-6371: hash collision denial of service
- * CVE-2013-6370: buffer overflow if size_t is larger than int
-
- * Avoid potential overflow in json_object_get_double
-
- * Eliminate the mc_abort() function and MC_ABORT macro.
-
- * Make the json_tokener_errors array local. It has been deprecated for
- a while, and json_tokener_error_desc() should be used instead.
-
- * change the floating point output format to %.17g so values with
- more than 6 digits show up in the output.
-
- * Remove the old libjson.so name compatibility support. The library is
- only created as libjson-c.so now and headers are only installed
- into the ${prefix}/json-c directory.
-
- * When supported by the linker, add the -Bsymbolic-functions flag.
-
- * Various changes to fix the build on MSVC.
-
- * Make strict mode more strict:
- * number must not start with 0
- * no single-quote strings
- * no comments
- * trailing char not allowed
- * only allow lowercase literals
-
- * Added a json_object_new_double_s() convenience function to allow
- an exact string representation of a double to be specified when
- creating the object and use it in json_tokener_parse_ex() so
- a re-serialized object more exactly matches the input.
-
- * Add support NaN and Infinity
-
-
-0.11
-
- * IMPORTANT: the name of the library has changed to libjson-c.so and
- the header files are now in include/json-c.
- The pkgconfig name has also changed from json to json-c.
- You should change your build to use appropriate -I and -l options.
- A compatibility shim is in place so builds using the old name will
- continue to work, but that will be removed in the next release.
- * Maximum recursion depth is now a runtime option.
- json_tokener_new() is provided for compatibility.
- json_tokener_new_ex(depth)
- * Include json_object_iterator.h in the installed headers.
- * Add support for building on Android.
- * Rewrite json_object_object_add to replace just the value if the key already exists so keys remain valid.
- * Make it safe to delete keys while iterating with the json_object_object_foreach macro.
- * Add a json_set_serializer() function to allow the string output of a json_object to be customized.
- * Make float parsing locale independent.
- * Add a json_tokener_set_flags() function and a JSON_TOKENER_STRICT flag.
- * Enable -Werror when building.
- * speed improvements to parsing 64-bit integers on systems with working sscanf
- * Add a json_object_object_length function.
- * Fix a bug (buffer overrun) when expanding arrays to more than 64 entries.
-
-0.10
-
- * Add a json_object_to_json_string_ext() function to allow output to be
- formatted in a more human readable form.
- * Add json_object_object_get_ex(), a NULL-safe get object method, to be able
- to distinguish between a key not present and the value being NULL.
- * Add an alternative iterator implementation, see json_object_iterator.h
- * Make json_object_iter public to enable external use of the
- json_object_object_foreachC macro.
- * Add a printbuf_memset() function to provide an effecient way to set and
- append things like whitespace indentation.
- * Adjust json_object_is_type and json_object_get_type so they return
- json_type_null for NULL objects and handle NULL passed to
- json_objct_object_get().
- * Rename boolean type to json_bool.
- * Fix various compile issues for Visual Studio and MinGW.
- * Allow json_tokener_parse_ex() to be re-used to parse multiple object.
- Also, fix some parsing issues with capitalized hexadecimal numbers and
- number in E notation.
- * Add json_tokener_get_error() and json_tokener_error_desc() to better
- encapsulate the process of retrieving errors while parsing.
- * Various improvements to the documentation of many functions.
- * Add new json_object_array_sort() function.
- * Fix a bug in json_object_get_int(), which would incorrectly return 0
- when called on a string type object.
- Eric Haszlakiewicz
- * Add a json_type_to_name() function.
- Eric Haszlakiewicz
- * Add a json_tokener_parse_verbose() function.
- Jehiah Czebotar
- * Improve support for null bytes within JSON strings.
- Jehiah Czebotar
- * Fix file descriptor leak if memory allocation fails in json_util
- Zachary Blair, zack_blair at hotmail dot com
- * Add int64 support. Two new functions json_object_net_int64 and
- json_object_get_int64. Binary compatibility preserved.
- Eric Haszlakiewicz, EHASZLA at transunion com
- Rui Miguel Silva Seabra, rms at 1407 dot org
- * Fix subtle bug in linkhash where lookup could hang after all slots
- were filled then successively freed.
- Spotted by Jean-Marc Naud, j dash m at newtraxtech dot com
- * Make json_object_from_file take const char *filename
- Spotted by Vikram Raj V, vsagar at attinteractive dot com
- * Add handling of surrogate pairs (json_tokener.c, test4.c, Makefile.am)
- Brent Miller, bdmiller at yahoo dash inc dot com
- * Correction to comment describing printbuf_memappend in printbuf.h
- Brent Miller, bdmiller at yahoo dash inc dot com
-
-0.9
- * Add README.html README-WIN32.html config.h.win32 to Makefile.am
- Michael Clark, <michael@metaparadigm.com>
- * Add const qualifier to the json_tokener_parse functions
- Eric Haszlakiewicz, EHASZLA at transunion dot com
- * Rename min and max so we can never clash with C or C++ std library
- Ian Atha, thatha at yahoo dash inc dot com
- * Fix any noticeable spelling or grammar errors.
- * Make sure every va_start has a va_end.
- * Check all pointers for validity.
- Erik Hovland, erik at hovland dot org
- * Fix json_object_get_boolean to return false for empty string
- Spotted by Vitaly Kruglikov, Vitaly dot Kruglikov at palm dot com
- * optimizations to json_tokener_parse_ex(), printbuf_memappend()
- Brent Miller, bdmiller at yahoo dash inc dot com
- * Disable REFCOUNT_DEBUG by default in json_object.c
- * Don't use this as a variable, so we can compile with a C++ compiler
- * Add casts from void* to type of assignment when using malloc
- * Add #ifdef __cplusplus guards to all of the headers
- * Add typedefs for json_object, json_tokener, array_list, printbuf, lh_table
- Michael Clark, <michael@metaparadigm.com>
- * Null pointer dereference fix. Fix json_object_get_boolean strlen test
- to not return TRUE for zero length string. Remove redundant includes.
- Erik Hovland, erik at hovland dot org
- * Fixed warning reported by adding -Wstrict-prototypes
- -Wold-style-definition to the compilatin flags.
- Dotan Barak, dotanba at gmail dot com
- * Add const correctness to public interfaces
- Gerard Krol, g dot c dot krol at student dot tudelft dot nl
-
-0.8
- * Add va_end for every va_start
- Dotan Barak, dotanba at gmail dot com
- * Add macros to enable compiling out debug code
- Geoffrey Young, geoff at modperlcookbook dot org
- * Fix bug with use of capital E in numbers with exponents
- Mateusz Loskot, mateusz at loskot dot net
- * Add stddef.h include
- * Patch allows for json-c compile with -Werror and not fail due to
- -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations
- Geoffrey Young, geoff at modperlcookbook dot org
-
-0.7
- * Add escaping of backslash to json output
- * Add escaping of foward slash on tokenizing and output
- * Changes to internal tokenizer from using recursion to
- using a depth state structure to allow incremental parsing
-
-0.6
- * Fix bug in escaping of control characters
- Johan Björklund, johbjo09 at kth dot se
- * Remove include "config.h" from headers (should only
- be included from .c files)
- Michael Clark <michael@metaparadigm.com>
-
-0.5
- * Make headers C++ compatible by change *this to *obj
- * Add ifdef C++ extern "C" to headers
- * Use simpler definition of min and max in bits.h
- Larry Lansing, llansing at fuzzynerd dot com
-
- * Remove automake 1.6 requirement
- * Move autogen commands into autogen.sh. Update README
- * Remove error pointer special case for Windows
- * Change license from LGPL to MIT
- Michael Clark <michael@metaparadigm.com>
-
-0.4
- * Fix additional error case in object parsing
- * Add back sign reversal in nested object parse as error pointer
- value is negative, while error value is positive.
- Michael Clark <michael@metaparadigm.com>
-
-0.3
- * fix pointer arithmetic bug for error pointer check in is_error() macro
- * fix type passed to printbuf_memappend in json_tokener
- * update autotools bootstrap instructions in README
- Michael Clark <michael@metaparadigm.com>
-
-0.2
- * printbuf.c - C. Watford (christopher.watford@gmail.com)
- Added a Win32/Win64 compliant implementation of vasprintf
- * debug.c - C. Watford (christopher.watford@gmail.com)
- Removed usage of vsyslog on Win32/Win64 systems, needs to be handled
- by a configure script
- * json_object.c - C. Watford (christopher.watford@gmail.com)
- Added scope operator to wrap usage of json_object_object_foreach, this
- needs to be rethought to be more ANSI C friendly
- * json_object.h - C. Watford (christopher.watford@gmail.com)
- Added Microsoft C friendly version of json_object_object_foreach
- * json_tokener.c - C. Watford (christopher.watford@gmail.com)
- Added a Win32/Win64 compliant implementation of strndup
- * json_util.c - C. Watford (christopher.watford@gmail.com)
- Added cast and mask to suffice size_t v. unsigned int conversion
- correctness
- * json_tokener.c - sign reversal issue on error info for nested object parse
- spotted by Johan Björklund (johbjo09 at kth.se)
- * json_object.c - escape " in json_escape_str
- * Change to automake and libtool to build shared and static library
- Michael Clark <michael@metaparadigm.com>
-
-0.1
- * initial release
diff --git a/json-c/Doxyfile b/json-c/Doxyfile
deleted file mode 100644
index da39aca2..00000000
--- a/json-c/Doxyfile
+++ /dev/null
@@ -1,1153 +0,0 @@
-# Doxyfile 1.3.8
-
-# This file describes the settings to be used by the documentation system
-# doxygen (www.doxygen.org) for a project
-#
-# All text after a hash (#) is considered a comment and will be ignored
-# The format is:
-# TAG = value [value, ...]
-# For lists items can also be appended using:
-# TAG += value [value, ...]
-# Values that contain spaces should be placed between quotes (" ")
-
-#---------------------------------------------------------------------------
-# Project related configuration options
-#---------------------------------------------------------------------------
-
-# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
-# by quotes) that should identify the project.
-
-PROJECT_NAME = json-c
-
-# The PROJECT_NUMBER tag can be used to enter a project or revision number.
-# This could be handy for archiving the generated documentation or
-# if some version control system is used.
-
-PROJECT_NUMBER = 0.12.99
-
-# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
-# base path where the generated documentation will be put.
-# If a relative path is entered, it will be relative to the location
-# where doxygen was started. If left blank the current directory will be used.
-
-OUTPUT_DIRECTORY = doc
-
-# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
-# 4096 sub-directories (in 2 levels) under the output directory of each output
-# format and will distribute the generated files over these directories.
-# Enabling this option can be useful when feeding doxygen a huge amount of source
-# files, where putting all generated files in the same directory would otherwise
-# cause performance problems for the file system.
-
-CREATE_SUBDIRS = NO
-
-# The OUTPUT_LANGUAGE tag is used to specify the language in which all
-# documentation generated by doxygen is written. Doxygen will use this
-# information to generate all constant output in the proper language.
-# The default language is English, other supported languages are:
-# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish,
-# Dutch, Finnish, French, German, Greek, Hungarian, Italian, Japanese,
-# Japanese-en (Japanese with English messages), Korean, Korean-en, Norwegian,
-# Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish,
-# Swedish, and Ukrainian.
-
-OUTPUT_LANGUAGE = English
-
-# This tag can be used to specify the encoding used in the generated output.
-# The encoding is not always determined by the language that is chosen,
-# but also whether or not the output is meant for Windows or non-Windows users.
-# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES
-# forces the Windows encoding (this is the default for the Windows binary),
-# whereas setting the tag to NO uses a Unix-style encoding (the default for
-# all platforms other than Windows).
-
-USE_WINDOWS_ENCODING = NO
-
-# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
-# include brief member descriptions after the members that are listed in
-# the file and class documentation (similar to JavaDoc).
-# Set to NO to disable this.
-
-BRIEF_MEMBER_DESC = YES
-
-# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
-# the brief description of a member or function before the detailed description.
-# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
-# brief descriptions will be completely suppressed.
-
-REPEAT_BRIEF = YES
-
-# This tag implements a quasi-intelligent brief description abbreviator
-# that is used to form the text in various listings. Each string
-# in this list, if found as the leading text of the brief description, will be
-# stripped from the text and the result after processing the whole list, is used
-# as the annotated text. Otherwise, the brief description is used as-is. If left
-# blank, the following values are used ("$name" is automatically replaced with the
-# name of the entity): "The $name class" "The $name widget" "The $name file"
-# "is" "provides" "specifies" "contains" "represents" "a" "an" "the"
-
-ABBREVIATE_BRIEF =
-
-# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
-# Doxygen will generate a detailed section even if there is only a brief
-# description.
-
-ALWAYS_DETAILED_SEC = NO
-
-# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all inherited
-# members of a class in the documentation of that class as if those members were
-# ordinary class members. Constructors, destructors and assignment operators of
-# the base classes will not be shown.
-
-INLINE_INHERITED_MEMB = NO
-
-# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
-# path before files name in the file list and in the header files. If set
-# to NO the shortest path that makes the file name unique will be used.
-
-FULL_PATH_NAMES = YES
-
-# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
-# can be used to strip a user-defined part of the path. Stripping is
-# only done if one of the specified strings matches the left-hand part of
-# the path. The tag can be used to show relative paths in the file list.
-# If left blank the directory from which doxygen is run is used as the
-# path to strip.
-
-STRIP_FROM_PATH =
-
-# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
-# the path mentioned in the documentation of a class, which tells
-# the reader which header file to include in order to use a class.
-# If left blank only the name of the header file containing the class
-# definition is used. Otherwise one should specify the include paths that
-# are normally passed to the compiler using the -I flag.
-
-STRIP_FROM_INC_PATH =
-
-# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
-# (but less readable) file names. This can be useful is your file systems
-# doesn't support long names like on DOS, Mac, or CD-ROM.
-
-SHORT_NAMES = NO
-
-# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
-# will interpret the first line (until the first dot) of a JavaDoc-style
-# comment as the brief description. If set to NO, the JavaDoc
-# comments will behave just like the Qt-style comments (thus requiring an
-# explicit @brief command for a brief description.
-
-JAVADOC_AUTOBRIEF = NO
-
-# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
-# treat a multi-line C++ special comment block (i.e. a block of //! or ///
-# comments) as a brief description. This used to be the default behaviour.
-# The new default is to treat a multi-line C++ comment block as a detailed
-# description. Set this tag to YES if you prefer the old behaviour instead.
-
-MULTILINE_CPP_IS_BRIEF = NO
-
-# If the DETAILS_AT_TOP tag is set to YES then Doxygen
-# will output the detailed description near the top, like JavaDoc.
-# If set to NO, the detailed description appears after the member
-# documentation.
-
-DETAILS_AT_TOP = NO
-
-# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
-# member inherits the documentation from any documented member that it
-# re-implements.
-
-INHERIT_DOCS = YES
-
-# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
-# tag is set to YES, then doxygen will reuse the documentation of the first
-# member in the group (if any) for the other members of the group. By default
-# all members of a group must be documented explicitly.
-
-DISTRIBUTE_GROUP_DOC = NO
-
-# The TAB_SIZE tag can be used to set the number of spaces in a tab.
-# Doxygen uses this value to replace tabs by spaces in code fragments.
-
-TAB_SIZE = 8
-
-# This tag can be used to specify a number of aliases that acts
-# as commands in the documentation. An alias has the form "name=value".
-# For example adding "sideeffect=\par Side Effects:\n" will allow you to
-# put the command \sideeffect (or @sideeffect) in the documentation, which
-# will result in a user-defined paragraph with heading "Side Effects:".
-# You can put \n's in the value part of an alias to insert newlines.
-
-ALIASES =
-
-# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources
-# only. Doxygen will then generate output that is more tailored for C.
-# For instance, some of the names that are used will be different. The list
-# of all members will be omitted, etc.
-
-OPTIMIZE_OUTPUT_FOR_C = YES
-
-# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java sources
-# only. Doxygen will then generate output that is more tailored for Java.
-# For instance, namespaces will be presented as packages, qualified scopes
-# will look different, etc.
-
-OPTIMIZE_OUTPUT_JAVA = NO
-
-# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
-# the same type (for instance a group of public functions) to be put as a
-# subgroup of that type (e.g. under the Public Functions section). Set it to
-# NO to prevent subgrouping. Alternatively, this can be done per class using
-# the \nosubgrouping command.
-
-SUBGROUPING = YES
-
-#---------------------------------------------------------------------------
-# Build related configuration options
-#---------------------------------------------------------------------------
-
-# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
-# documentation are documented, even if no documentation was available.
-# Private class members and static file members will be hidden unless
-# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
-
-EXTRACT_ALL = YES
-
-# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
-# will be included in the documentation.
-
-EXTRACT_PRIVATE = NO
-
-# If the EXTRACT_STATIC tag is set to YES all static members of a file
-# will be included in the documentation.
-
-EXTRACT_STATIC = NO
-
-# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
-# defined locally in source files will be included in the documentation.
-# If set to NO only classes defined in header files are included.
-
-EXTRACT_LOCAL_CLASSES = NO
-
-# This flag is only useful for Objective-C code. When set to YES local
-# methods, which are defined in the implementation section but not in
-# the interface are included in the documentation.
-# If set to NO (the default) only methods in the interface are included.
-
-EXTRACT_LOCAL_METHODS = NO
-
-# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
-# undocumented members of documented classes, files or namespaces.
-# If set to NO (the default) these members will be included in the
-# various overviews, but no documentation section is generated.
-# This option has no effect if EXTRACT_ALL is enabled.
-
-HIDE_UNDOC_MEMBERS = NO
-
-# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
-# undocumented classes that are normally visible in the class hierarchy.
-# If set to NO (the default) these classes will be included in the various
-# overviews. This option has no effect if EXTRACT_ALL is enabled.
-
-HIDE_UNDOC_CLASSES = NO
-
-# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
-# friend (class|struct|union) declarations.
-# If set to NO (the default) these declarations will be included in the
-# documentation.
-
-HIDE_FRIEND_COMPOUNDS = NO
-
-# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
-# documentation blocks found inside the body of a function.
-# If set to NO (the default) these blocks will be appended to the
-# function's detailed documentation block.
-
-HIDE_IN_BODY_DOCS = NO
-
-# The INTERNAL_DOCS tag determines if documentation
-# that is typed after a \internal command is included. If the tag is set
-# to NO (the default) then the documentation will be excluded.
-# Set it to YES to include the internal documentation.
-
-INTERNAL_DOCS = NO
-
-# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
-# file names in lower-case letters. If set to YES upper-case letters are also
-# allowed. This is useful if you have classes or files whose names only differ
-# in case and if your file system supports case sensitive file names. Windows
-# and Mac users are advised to set this option to NO.
-
-CASE_SENSE_NAMES = YES
-
-# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
-# will show members with their full class and namespace scopes in the
-# documentation. If set to YES the scope will be hidden.
-
-HIDE_SCOPE_NAMES = NO
-
-# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
-# will put a list of the files that are included by a file in the documentation
-# of that file.
-
-SHOW_INCLUDE_FILES = NO
-
-# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
-# is inserted in the documentation for inline members.
-
-INLINE_INFO = YES
-
-# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
-# will sort the (detailed) documentation of file and class members
-# alphabetically by member name. If set to NO the members will appear in
-# declaration order.
-
-SORT_MEMBER_DOCS = YES
-
-# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
-# brief documentation of file, namespace and class members alphabetically
-# by member name. If set to NO (the default) the members will appear in
-# declaration order.
-
-SORT_BRIEF_DOCS = NO
-
-# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
-# sorted by fully-qualified names, including namespaces. If set to
-# NO (the default), the class list will be sorted only by class name,
-# not including the namespace part.
-# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
-# Note: This option applies only to the class list, not to the
-# alphabetical list.
-
-SORT_BY_SCOPE_NAME = NO
-
-# The GENERATE_TODOLIST tag can be used to enable (YES) or
-# disable (NO) the todo list. This list is created by putting \todo
-# commands in the documentation.
-
-GENERATE_TODOLIST = YES
-
-# The GENERATE_TESTLIST tag can be used to enable (YES) or
-# disable (NO) the test list. This list is created by putting \test
-# commands in the documentation.
-
-GENERATE_TESTLIST = YES
-
-# The GENERATE_BUGLIST tag can be used to enable (YES) or
-# disable (NO) the bug list. This list is created by putting \bug
-# commands in the documentation.
-
-GENERATE_BUGLIST = YES
-
-# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
-# disable (NO) the deprecated list. This list is created by putting
-# \deprecated commands in the documentation.
-
-GENERATE_DEPRECATEDLIST= YES
-
-# The ENABLED_SECTIONS tag can be used to enable conditional
-# documentation sections, marked by \if sectionname ... \endif.
-
-ENABLED_SECTIONS =
-
-# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
-# the initial value of a variable or define consists of for it to appear in
-# the documentation. If the initializer consists of more lines than specified
-# here it will be hidden. Use a value of 0 to hide initializers completely.
-# The appearance of the initializer of individual variables and defines in the
-# documentation can be controlled using \showinitializer or \hideinitializer
-# command in the documentation regardless of this setting.
-
-MAX_INITIALIZER_LINES = 30
-
-# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
-# at the bottom of the documentation of classes and structs. If set to YES the
-# list will mention the files that were used to generate the documentation.
-
-SHOW_USED_FILES = YES
-
-#---------------------------------------------------------------------------
-# configuration options related to warning and progress messages
-#---------------------------------------------------------------------------
-
-# The QUIET tag can be used to turn on/off the messages that are generated
-# by doxygen. Possible values are YES and NO. If left blank NO is used.
-
-QUIET = NO
-
-# The WARNINGS tag can be used to turn on/off the warning messages that are
-# generated by doxygen. Possible values are YES and NO. If left blank
-# NO is used.
-
-WARNINGS = YES
-
-# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
-# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
-# automatically be disabled.
-
-WARN_IF_UNDOCUMENTED = YES
-
-# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
-# potential errors in the documentation, such as not documenting some
-# parameters in a documented function, or documenting parameters that
-# don't exist or using markup commands wrongly.
-
-WARN_IF_DOC_ERROR = YES
-
-# The WARN_FORMAT tag determines the format of the warning messages that
-# doxygen can produce. The string should contain the $file, $line, and $text
-# tags, which will be replaced by the file and line number from which the
-# warning originated and the warning text.
-
-WARN_FORMAT = "$file:$line: $text"
-
-# The WARN_LOGFILE tag can be used to specify a file to which warning
-# and error messages should be written. If left blank the output is written
-# to stderr.
-
-WARN_LOGFILE =
-
-#---------------------------------------------------------------------------
-# configuration options related to the input files
-#---------------------------------------------------------------------------
-
-# The INPUT tag can be used to specify the files and/or directories that contain
-# documented source files. You may enter file names like "myfile.cpp" or
-# directories like "/usr/src/myproject". Separate the files or directories
-# with spaces.
-
-INPUT =
-
-# If the value of the INPUT tag contains directories, you can use the
-# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
-# and *.h) to filter out the source-files in the directories. If left
-# blank the following patterns are tested:
-# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx *.hpp
-# *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm
-
-FILE_PATTERNS = *.h
-
-# The RECURSIVE tag can be used to turn specify whether or not subdirectories
-# should be searched for input files as well. Possible values are YES and NO.
-# If left blank NO is used.
-
-RECURSIVE = NO
-
-# The EXCLUDE tag can be used to specify files and/or directories that should
-# excluded from the INPUT source files. This way you can easily exclude a
-# subdirectory from a directory tree whose root is specified with the INPUT tag.
-
-EXCLUDE =
-
-# The EXCLUDE_SYMLINKS tag can be used select whether or not files or directories
-# that are symbolic links (a Unix filesystem feature) are excluded from the input.
-
-EXCLUDE_SYMLINKS = NO
-
-# If the value of the INPUT tag contains directories, you can use the
-# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
-# certain files from those directories.
-
-EXCLUDE_PATTERNS =
-
-# The EXAMPLE_PATH tag can be used to specify one or more files or
-# directories that contain example code fragments that are included (see
-# the \include command).
-
-EXAMPLE_PATH =
-
-# If the value of the EXAMPLE_PATH tag contains directories, you can use the
-# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
-# and *.h) to filter out the source-files in the directories. If left
-# blank all files are included.
-
-EXAMPLE_PATTERNS =
-
-# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
-# searched for input files to be used with the \include or \dontinclude
-# commands irrespective of the value of the RECURSIVE tag.
-# Possible values are YES and NO. If left blank NO is used.
-
-EXAMPLE_RECURSIVE = NO
-
-# The IMAGE_PATH tag can be used to specify one or more files or
-# directories that contain image that are included in the documentation (see
-# the \image command).
-
-IMAGE_PATH =
-
-# The INPUT_FILTER tag can be used to specify a program that doxygen should
-# invoke to filter for each input file. Doxygen will invoke the filter program
-# by executing (via popen()) the command <filter> <input-file>, where <filter>
-# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
-# input file. Doxygen will then use the output that the filter program writes
-# to standard output. If FILTER_PATTERNS is specified, this tag will be
-# ignored.
-
-INPUT_FILTER =
-
-# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
-# basis. Doxygen will compare the file name with each pattern and apply the
-# filter if there is a match. The filters are a list of the form:
-# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
-# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER
-# is applied to all files.
-
-FILTER_PATTERNS =
-
-# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
-# INPUT_FILTER) will be used to filter the input files when producing source
-# files to browse (i.e. when SOURCE_BROWSER is set to YES).
-
-FILTER_SOURCE_FILES = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to source browsing
-#---------------------------------------------------------------------------
-
-# If the SOURCE_BROWSER tag is set to YES then a list of source files will
-# be generated. Documented entities will be cross-referenced with these sources.
-# Note: To get rid of all source code in the generated output, make sure also
-# VERBATIM_HEADERS is set to NO.
-
-SOURCE_BROWSER = NO
-
-# Setting the INLINE_SOURCES tag to YES will include the body
-# of functions and classes directly in the documentation.
-
-INLINE_SOURCES = NO
-
-# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
-# doxygen to hide any special comment blocks from generated source code
-# fragments. Normal C and C++ comments will always remain visible.
-
-STRIP_CODE_COMMENTS = YES
-
-# If the REFERENCED_BY_RELATION tag is set to YES (the default)
-# then for each documented function all documented
-# functions referencing it will be listed.
-
-REFERENCED_BY_RELATION = YES
-
-# If the REFERENCES_RELATION tag is set to YES (the default)
-# then for each documented function all documented entities
-# called/used by that function will be listed.
-
-REFERENCES_RELATION = YES
-
-# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
-# will generate a verbatim copy of the header file for each class for
-# which an include is specified. Set to NO to disable this.
-
-VERBATIM_HEADERS = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the alphabetical class index
-#---------------------------------------------------------------------------
-
-# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
-# of all compounds will be generated. Enable this if the project
-# contains a lot of classes, structs, unions or interfaces.
-
-ALPHABETICAL_INDEX = NO
-
-# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
-# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
-# in which this list will be split (can be a number in the range [1..20])
-
-COLS_IN_ALPHA_INDEX = 5
-
-# In case all classes in a project start with a common prefix, all
-# classes will be put under the same header in the alphabetical index.
-# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
-# should be ignored while generating the index headers.
-
-IGNORE_PREFIX =
-
-#---------------------------------------------------------------------------
-# configuration options related to the HTML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
-# generate HTML output.
-
-GENERATE_HTML = YES
-
-# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `html' will be used as the default path.
-
-HTML_OUTPUT = html
-
-# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
-# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
-# doxygen will generate files with .html extension.
-
-HTML_FILE_EXTENSION = .html
-
-# The HTML_HEADER tag can be used to specify a personal HTML header for
-# each generated HTML page. If it is left blank doxygen will generate a
-# standard header.
-
-HTML_HEADER =
-
-# The HTML_FOOTER tag can be used to specify a personal HTML footer for
-# each generated HTML page. If it is left blank doxygen will generate a
-# standard footer.
-
-HTML_FOOTER =
-
-# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
-# style sheet that is used by each HTML page. It can be used to
-# fine-tune the look of the HTML output. If the tag is left blank doxygen
-# will generate a default style sheet. Note that doxygen will try to copy
-# the style sheet file to the HTML output directory, so don't put your own
-# stylesheet in the HTML output directory as well, or it will be erased!
-
-HTML_STYLESHEET =
-
-# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
-# files or namespaces will be aligned in HTML using tables. If set to
-# NO a bullet list will be used.
-
-HTML_ALIGN_MEMBERS = YES
-
-# If the GENERATE_HTMLHELP tag is set to YES, additional index files
-# will be generated that can be used as input for tools like the
-# Microsoft HTML help workshop to generate a compressed HTML help file (.chm)
-# of the generated HTML documentation.
-
-GENERATE_HTMLHELP = NO
-
-# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
-# be used to specify the file name of the resulting .chm file. You
-# can add a path in front of the file if the result should not be
-# written to the html output directory.
-
-CHM_FILE =
-
-# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
-# be used to specify the location (absolute path including file name) of
-# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
-# the HTML help compiler on the generated index.hhp.
-
-HHC_LOCATION =
-
-# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
-# controls if a separate .chi index file is generated (YES) or that
-# it should be included in the master .chm file (NO).
-
-GENERATE_CHI = NO
-
-# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
-# controls whether a binary table of contents is generated (YES) or a
-# normal table of contents (NO) in the .chm file.
-
-BINARY_TOC = NO
-
-# The TOC_EXPAND flag can be set to YES to add extra items for group members
-# to the contents of the HTML help documentation and to the tree view.
-
-TOC_EXPAND = NO
-
-# The DISABLE_INDEX tag can be used to turn on/off the condensed index at
-# top of each HTML page. The value NO (the default) enables the index and
-# the value YES disables it.
-
-DISABLE_INDEX = NO
-
-# This tag can be used to set the number of enum values (range [1..20])
-# that doxygen will group on one line in the generated HTML documentation.
-
-ENUM_VALUES_PER_LINE = 4
-
-# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be
-# generated containing a tree-like index structure (just like the one that
-# is generated for HTML Help). For this to work a browser that supports
-# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+,
-# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are
-# probably better off using the HTML help feature.
-
-GENERATE_TREEVIEW = NO
-
-# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
-# used to set the initial width (in pixels) of the frame in which the tree
-# is shown.
-
-TREEVIEW_WIDTH = 250
-
-#---------------------------------------------------------------------------
-# configuration options related to the LaTeX output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
-# generate Latex output.
-
-GENERATE_LATEX = NO
-
-# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `latex' will be used as the default path.
-
-LATEX_OUTPUT = latex
-
-# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
-# invoked. If left blank `latex' will be used as the default command name.
-
-LATEX_CMD_NAME = latex
-
-# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
-# generate index for LaTeX. If left blank `makeindex' will be used as the
-# default command name.
-
-MAKEINDEX_CMD_NAME = makeindex
-
-# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
-# LaTeX documents. This may be useful for small projects and may help to
-# save some trees in general.
-
-COMPACT_LATEX = NO
-
-# The PAPER_TYPE tag can be used to set the paper type that is used
-# by the printer. Possible values are: a4, a4wide, letter, legal and
-# executive. If left blank a4wide will be used.
-
-PAPER_TYPE = a4wide
-
-# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
-# packages that should be included in the LaTeX output.
-
-EXTRA_PACKAGES =
-
-# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
-# the generated latex document. The header should contain everything until
-# the first chapter. If it is left blank doxygen will generate a
-# standard header. Notice: only use this tag if you know what you are doing!
-
-LATEX_HEADER =
-
-# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
-# is prepared for conversion to pdf (using ps2pdf). The pdf file will
-# contain links (just like the HTML output) instead of page references
-# This makes the output suitable for online browsing using a pdf viewer.
-
-PDF_HYPERLINKS = NO
-
-# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
-# plain latex in the generated Makefile. Set this option to YES to get a
-# higher quality PDF documentation.
-
-USE_PDFLATEX = NO
-
-# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
-# command to the generated LaTeX files. This will instruct LaTeX to keep
-# running if errors occur, instead of asking the user for help.
-# This option is also used when generating formulas in HTML.
-
-LATEX_BATCHMODE = NO
-
-# If LATEX_HIDE_INDICES is set to YES then doxygen will not
-# include the index chapters (such as File Index, Compound Index, etc.)
-# in the output.
-
-LATEX_HIDE_INDICES = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the RTF output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
-# The RTF output is optimized for Word 97 and may not look very pretty with
-# other RTF readers or editors.
-
-GENERATE_RTF = NO
-
-# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `rtf' will be used as the default path.
-
-RTF_OUTPUT = rtf
-
-# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
-# RTF documents. This may be useful for small projects and may help to
-# save some trees in general.
-
-COMPACT_RTF = NO
-
-# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
-# will contain hyperlink fields. The RTF file will
-# contain links (just like the HTML output) instead of page references.
-# This makes the output suitable for online browsing using WORD or other
-# programs which support those fields.
-# Note: wordpad (write) and others do not support links.
-
-RTF_HYPERLINKS = NO
-
-# Load stylesheet definitions from file. Syntax is similar to doxygen's
-# config file, i.e. a series of assignments. You only have to provide
-# replacements, missing definitions are set to their default value.
-
-RTF_STYLESHEET_FILE =
-
-# Set optional variables used in the generation of an rtf document.
-# Syntax is similar to doxygen's config file.
-
-RTF_EXTENSIONS_FILE =
-
-#---------------------------------------------------------------------------
-# configuration options related to the man page output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
-# generate man pages
-
-GENERATE_MAN = NO
-
-# The MAN_OUTPUT tag is used to specify where the man pages will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `man' will be used as the default path.
-
-MAN_OUTPUT = man
-
-# The MAN_EXTENSION tag determines the extension that is added to
-# the generated man pages (default is the subroutine's section .3)
-
-MAN_EXTENSION = .3
-
-# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
-# then it will generate one additional man file for each entity
-# documented in the real man page(s). These additional files
-# only source the real man page, but without them the man command
-# would be unable to find the correct page. The default is NO.
-
-MAN_LINKS = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the XML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_XML tag is set to YES Doxygen will
-# generate an XML file that captures the structure of
-# the code including all documentation.
-
-GENERATE_XML = NO
-
-# The XML_OUTPUT tag is used to specify where the XML pages will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `xml' will be used as the default path.
-
-XML_OUTPUT = xml
-
-# The XML_SCHEMA tag can be used to specify an XML schema,
-# which can be used by a validating XML parser to check the
-# syntax of the XML files.
-
-XML_SCHEMA =
-
-# The XML_DTD tag can be used to specify an XML DTD,
-# which can be used by a validating XML parser to check the
-# syntax of the XML files.
-
-XML_DTD =
-
-# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
-# dump the program listings (including syntax highlighting
-# and cross-referencing information) to the XML output. Note that
-# enabling this will significantly increase the size of the XML output.
-
-XML_PROGRAMLISTING = YES
-
-#---------------------------------------------------------------------------
-# configuration options for the AutoGen Definitions output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
-# generate an AutoGen Definitions (see autogen.sf.net) file
-# that captures the structure of the code including all
-# documentation. Note that this feature is still experimental
-# and incomplete at the moment.
-
-GENERATE_AUTOGEN_DEF = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the Perl module output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_PERLMOD tag is set to YES Doxygen will
-# generate a Perl module file that captures the structure of
-# the code including all documentation. Note that this
-# feature is still experimental and incomplete at the
-# moment.
-
-GENERATE_PERLMOD = NO
-
-# If the PERLMOD_LATEX tag is set to YES Doxygen will generate
-# the necessary Makefile rules, Perl scripts and LaTeX code to be able
-# to generate PDF and DVI output from the Perl module output.
-
-PERLMOD_LATEX = NO
-
-# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
-# nicely formatted so it can be parsed by a human reader. This is useful
-# if you want to understand what is going on. On the other hand, if this
-# tag is set to NO the size of the Perl module output will be much smaller
-# and Perl will parse it just the same.
-
-PERLMOD_PRETTY = YES
-
-# The names of the make variables in the generated doxyrules.make file
-# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
-# This is useful so different doxyrules.make files included by the same
-# Makefile don't overwrite each other's variables.
-
-PERLMOD_MAKEVAR_PREFIX =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the preprocessor
-#---------------------------------------------------------------------------
-
-# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
-# evaluate all C-preprocessor directives found in the sources and include
-# files.
-
-ENABLE_PREPROCESSING = YES
-
-# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
-# names in the source code. If set to NO (the default) only conditional
-# compilation will be performed. Macro expansion can be done in a controlled
-# way by setting EXPAND_ONLY_PREDEF to YES.
-
-MACRO_EXPANSION = NO
-
-# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
-# then the macro expansion is limited to the macros specified with the
-# PREDEFINED and EXPAND_AS_PREDEFINED tags.
-
-EXPAND_ONLY_PREDEF = NO
-
-# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
-# in the INCLUDE_PATH (see below) will be search if a #include is found.
-
-SEARCH_INCLUDES = YES
-
-# The INCLUDE_PATH tag can be used to specify one or more directories that
-# contain include files that are not input files but should be processed by
-# the preprocessor.
-
-INCLUDE_PATH =
-
-# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
-# patterns (like *.h and *.hpp) to filter out the header-files in the
-# directories. If left blank, the patterns specified with FILE_PATTERNS will
-# be used.
-
-INCLUDE_FILE_PATTERNS =
-
-# The PREDEFINED tag can be used to specify one or more macro names that
-# are defined before the preprocessor is started (similar to the -D option of
-# gcc). The argument of the tag is a list of macros of the form: name
-# or name=definition (no spaces). If the definition and the = are
-# omitted =1 is assumed.
-
-PREDEFINED =
-
-# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
-# this tag can be used to specify a list of macro names that should be expanded.
-# The macro definition that is found in the sources will be used.
-# Use the PREDEFINED tag if you want to use a different macro definition.
-
-EXPAND_AS_DEFINED =
-
-# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
-# doxygen's preprocessor will remove all function-like macros that are alone
-# on a line, have an all uppercase name, and do not end with a semicolon. Such
-# function macros are typically used for boiler-plate code, and will confuse the
-# parser if not removed.
-
-SKIP_FUNCTION_MACROS = YES
-
-#---------------------------------------------------------------------------
-# Configuration::additions related to external references
-#---------------------------------------------------------------------------
-
-# The TAGFILES option can be used to specify one or more tagfiles.
-# Optionally an initial location of the external documentation
-# can be added for each tagfile. The format of a tag file without
-# this location is as follows:
-# TAGFILES = file1 file2 ...
-# Adding location for the tag files is done as follows:
-# TAGFILES = file1=loc1 "file2 = loc2" ...
-# where "loc1" and "loc2" can be relative or absolute paths or
-# URLs. If a location is present for each tag, the installdox tool
-# does not have to be run to correct the links.
-# Note that each tag file must have a unique name
-# (where the name does NOT include the path)
-# If a tag file is not located in the directory in which doxygen
-# is run, you must also specify the path to the tagfile here.
-
-TAGFILES =
-
-# When a file name is specified after GENERATE_TAGFILE, doxygen will create
-# a tag file that is based on the input files it reads.
-
-GENERATE_TAGFILE =
-
-# If the ALLEXTERNALS tag is set to YES all external classes will be listed
-# in the class index. If set to NO only the inherited external classes
-# will be listed.
-
-ALLEXTERNALS = NO
-
-# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
-# in the modules index. If set to NO, only the current project's groups will
-# be listed.
-
-EXTERNAL_GROUPS = YES
-
-# The PERL_PATH should be the absolute path and name of the perl script
-# interpreter (i.e. the result of `which perl').
-
-PERL_PATH = /usr/bin/perl
-
-#---------------------------------------------------------------------------
-# Configuration options related to the dot tool
-#---------------------------------------------------------------------------
-
-# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
-# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base or
-# super classes. Setting the tag to NO turns the diagrams off. Note that this
-# option is superseded by the HAVE_DOT option below. This is only a fallback. It is
-# recommended to install and use dot, since it yields more powerful graphs.
-
-CLASS_DIAGRAMS = YES
-
-# If set to YES, the inheritance and collaboration graphs will hide
-# inheritance and usage relations if the target is undocumented
-# or is not a class.
-
-HIDE_UNDOC_RELATIONS = YES
-
-# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
-# available from the path. This tool is part of Graphviz, a graph visualization
-# toolkit from AT&T and Lucent Bell Labs. The other options in this section
-# have no effect if this option is set to NO (the default)
-
-HAVE_DOT = NO
-
-# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for each documented class showing the direct and
-# indirect inheritance relations. Setting this tag to YES will force the
-# the CLASS_DIAGRAMS tag to NO.
-
-CLASS_GRAPH = YES
-
-# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for each documented class showing the direct and
-# indirect implementation dependencies (inheritance, containment, and
-# class references variables) of the class with other documented classes.
-
-COLLABORATION_GRAPH = YES
-
-# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
-# collaboration diagrams in a style similar to the OMG's Unified Modeling
-# Language.
-
-UML_LOOK = NO
-
-# If set to YES, the inheritance and collaboration graphs will show the
-# relations between templates and their instances.
-
-TEMPLATE_RELATIONS = NO
-
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
-# tags are set to YES then doxygen will generate a graph for each documented
-# file showing the direct and indirect include dependencies of the file with
-# other documented files.
-
-INCLUDE_GRAPH = YES
-
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
-# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
-# documented header file showing the documented files that directly or
-# indirectly include this file.
-
-INCLUDED_BY_GRAPH = YES
-
-# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will
-# generate a call dependency graph for every global function or class method.
-# Note that enabling this option will significantly increase the time of a run.
-# So in most cases it will be better to enable call graphs for selected
-# functions only using the \callgraph command.
-
-CALL_GRAPH = NO
-
-# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
-# will graphical hierarchy of all classes instead of a textual one.
-
-GRAPHICAL_HIERARCHY = YES
-
-# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
-# generated by dot. Possible values are png, jpg, or gif
-# If left blank png will be used.
-
-DOT_IMAGE_FORMAT = png
-
-# The tag DOT_PATH can be used to specify the path where the dot tool can be
-# found. If left blank, it is assumed the dot tool can be found on the path.
-
-DOT_PATH =
-
-# The DOTFILE_DIRS tag can be used to specify one or more directories that
-# contain dot files that are included in the documentation (see the
-# \dotfile command).
-
-DOTFILE_DIRS =
-
-# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width
-# (in pixels) of the graphs generated by dot. If a graph becomes larger than
-# this value, doxygen will try to truncate the graph, so that it fits within
-# the specified constraint. Beware that most browsers cannot cope with very
-# large images.
-
-MAX_DOT_GRAPH_WIDTH = 1024
-
-# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height
-# (in pixels) of the graphs generated by dot. If a graph becomes larger than
-# this value, doxygen will try to truncate the graph, so that it fits within
-# the specified constraint. Beware that most browsers cannot cope with very
-# large images.
-
-MAX_DOT_GRAPH_HEIGHT = 1024
-
-# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
-# graphs generated by dot. A depth value of 3 means that only nodes reachable
-# from the root by following a path via at most 3 edges will be shown. Nodes that
-# lay further from the root node will be omitted. Note that setting this option to
-# 1 or 2 may greatly reduce the computation time needed for large code bases. Also
-# note that a graph may be further truncated if the graph's image dimensions are
-# not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH and MAX_DOT_GRAPH_HEIGHT).
-# If 0 is used for the depth value (the default), the graph is not depth-constrained.
-
-MAX_DOT_GRAPH_DEPTH = 0
-
-# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
-# generate a legend page explaining the meaning of the various boxes and
-# arrows in the dot generated graphs.
-
-GENERATE_LEGEND = YES
-
-# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
-# remove the intermediate dot files that are used to generate
-# the various graphs.
-
-DOT_CLEANUP = YES
-
-#---------------------------------------------------------------------------
-# Configuration::additions related to the search engine
-#---------------------------------------------------------------------------
-
-# The SEARCHENGINE tag specifies whether or not a search engine should be
-# used. If set to NO the values of all tags below this one will be ignored.
-
-SEARCHENGINE = NO
diff --git a/json-c/Makefile.am b/json-c/Makefile.am
deleted file mode 100644
index 26ced270..00000000
--- a/json-c/Makefile.am
+++ /dev/null
@@ -1,74 +0,0 @@
-include Makefile.am.inc
-
-EXTRA_DIST = README.html README-WIN32.html config.h.win32 doc json-c.vcproj
-SUBDIRS = . tests
-
-lib_LTLIBRARIES = libjson-c.la
-
-pkgconfigdir = $(libdir)/pkgconfig
-pkgconfig_DATA = json-c.pc
-
-libjson_cincludedir = $(includedir)/json-c
-libjson_cinclude_HEADERS = \
- arraylist.h \
- bits.h \
- debug.h \
- json.h \
- json_config.h \
- json_c_version.h \
- json_inttypes.h \
- json_object.h \
- json_object_iterator.h \
- json_object_private.h \
- json_tokener.h \
- json_util.h \
- linkhash.h \
- printbuf.h \
- random_seed.h
-
-#libjsonx_includedir = $(libdir)/json-c-@VERSION@
-#
-#libjsonx_include_HEADERS = \
-# json_config.h
-
-libjson_c_la_LDFLAGS = -version-info 2:0:0 -no-undefined @JSON_BSYMBOLIC_LDFLAGS@
-
-libjson_c_la_SOURCES = \
- arraylist.c \
- debug.c \
- json_c_version.c \
- json_object.c \
- json_object_iterator.c \
- json_tokener.c \
- json_util.c \
- linkhash.c \
- printbuf.c \
- random_seed.c
-
-
-distclean-local:
- -rm -rf $(testsubdir)
- -rm -rf config.h.in~ Makefile.in aclocal.m4 autom4te.cache/ config.guess config.sub depcomp install-sh ltmain.sh missing
- -rm -f INSTALL test-driver tests/Makefile.in compile
-
-maintainer-clean-local:
- -rm -rf configure
-
-uninstall-local:
- rm -rf "$(DESTDIR)@includedir@/json-c"
- rm -f "$(DESTDIR)@includedir@/json"
-
-ANDROID_CFLAGS = -I$(top_srcdir) -DHAVE_CONFIG_H
-
-Android.mk: Makefile.am
- androgenizer -:PROJECT json-c \
- -:SHARED libjson-c \
- -:TAGS eng debug \
- -:REL_TOP $(top_srcdir) -:ABS_TOP $(abs_top_srcdir) \
- -:SOURCES $(libjson_c_la_SOURCES) $(nodist_libjson_c_la_SOURCES) \
- -:CFLAGS $(DEFS) $(ANDROID_CFLAGS) $(libjson_c_la_CFLAGS) \
- -:LDFLAGS $(libjson_c_la_LDFLAGS) $(libjson_c_la_LIBADD) \
- -:HEADER_TARGET json-c \
- -:HEADERS $(libjson_cinclude_HEADERS) \
- -:PASSTHROUGH LOCAL_ARM_MODE:=arm \
- > $@
diff --git a/json-c/Makefile.am.inc b/json-c/Makefile.am.inc
deleted file mode 100644
index fec591b6..00000000
--- a/json-c/Makefile.am.inc
+++ /dev/null
@@ -1,2 +0,0 @@
-AM_CFLAGS = -Wall -Werror -Wno-error=deprecated-declarations -Wextra -Wwrite-strings -Wno-unused-parameter -std=gnu99 -D_GNU_SOURCE -D_REENTRANT
-
diff --git a/json-c/README b/json-c/README
deleted file mode 100644
index e69de29b..00000000
--- a/json-c/README
+++ /dev/null
diff --git a/json-c/README-WIN32.html b/json-c/README-WIN32.html
deleted file mode 100644
index abdb39e7..00000000
--- a/json-c/README-WIN32.html
+++ /dev/null
@@ -1,50 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
- <head>
- <title>JSON-C - A JSON implementation in C - Win32 specific notes</title>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
- </head>
- <body>
- <h2>Windows specific notes for JSON-C</h2>
- <p>Please send Win32 bug reports to <a href="mailto:christopher.watford@gmail.com">christopher.watford@gmail.com</a></p>
- <p><b>Win32 Specific Changes:</b></p>
- <ul>
- <li>
- Various functions have been redefined to their Win32 version (i.e. <tt>open</tt>
- on win32 is <tt>_open</tt>)</li>
- <li>
- Implemented missing functions from MS's libc (i.e. <tt>vasprintf</tt>)</li>
- <li>
- Added code to allow Win64 support without integer resizing issues, this
- probably makes it much nicer on 64bit machines everywhere (i.e. using <tt>ptrdiff_t</tt>
- for pointer math)</li>
- </ul>
- <p><b>Porting Changelog:</b></p>
- <dl>
- <dt><tt>printbuf.c</tt> - C. Watford (christopher.watford@gmail.com)</dt>
- <dd>
- Added a Win32/Win64 compliant implementation of <tt>vasprintf</tt></dd>
- <dt><tt>debug.c</tt> - C. Watford (christopher.watford@gmail.com)</dt>
- <dd>
- Removed usage of <tt>vsyslog</tt> on Win32/Win64 systems, needs to be handled
- by a configure script</dd>
- <dt><tt>json_object.c</tt> - C. Watford (christopher.watford@gmail.com)</dt>
- <dd>
- Added scope operator to wrap usage of <tt>json_object_object_foreach</tt>, this needs to be
- rethought to be more ANSI C friendly</dd>
- <dt><tt>json_object.h</tt> - C. Watford (christopher.watford@gmail.com)</dt>
- <dd>
- Added Microsoft C friendly version of <tt>json_object_object_foreach</tt></dd>
- <dt><tt>json_tokener.c</tt> - C. Watford (christopher.watford@gmail.com)</dt>
- <dd>
- Added a Win32/Win64 compliant implementation of <tt>strndup</tt></dd>
- <dt><tt>json_util.c</tt> - C. Watford (christopher.watford@gmail.com)</dt>
- <dd>
- Added cast and mask to suffice <tt>size_t</tt> v. <tt>unsigned int</tt>
- conversion correctness</dd>
- </dl>
- <p>This program is free software; you can redistribute it and/or modify it under
- the terms of the MIT License. See COPYING for details.</p>
- <hr />
- </body>
-</html>
diff --git a/json-c/README.html b/json-c/README.html
deleted file mode 100644
index dc696af3..00000000
--- a/json-c/README.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
- <head>
- <title>JSON-C - A JSON implementation in C</title>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
- </head>
- <body>
- <h2>JSON-C - A JSON implementation in C</h2>
-
- <h3>Overview</h3>
- <p>JSON-C implements a reference counting object model that allows you to easily
- construct JSON objects in C, output them as JSON formatted strings and parse
- JSON formatted strings back into the C representation of JSON objects.</p>
-
- <h3>Building</h3>
- <p>To setup JSON-C to build on your system please run <tt>configure</tt> and <tt>make</tt>.</p>
- <p>If you are on Win32 and are not using the VS project file, be sure
- to rename <tt>config.h.win32</tt> to <tt>config.h</tt> before building.</p>
-
- <h3>Documentation</h3>
- <P>Doxygen generated documentation exists <a href="doc/html/json__object_8h.html">here</a>
- and Win32 specific notes can be found <a href="README-WIN32.html">here</a>.</P>
-
- <h3><a href="https://github.com/json-c/json-c">GIT Reposository</a></h3>
- <p><strong><code>git clone https://github.com/json-c/json-c.git</code></strong></p>
-
- <h3><a href="http://groups.google.com/group/json-c">Mailing List</a></h3>
- <pi>Send email to <strong><code>json-c <i>&lt;at&gt;</i> googlegroups <i>&lt;dot&gt;</i> com</code></strong></p>
-
- <h3><a href="COPYING">License</a></h3>
- <p>This program is free software; you can redistribute it and/or modify it under the terms of the MIT License..</p>
- <hr/>
- </body>
-</html>
diff --git a/json-c/README.md b/json-c/README.md
deleted file mode 100644
index bf4d2e4f..00000000
--- a/json-c/README.md
+++ /dev/null
@@ -1,63 +0,0 @@
-`json-c`
-========
-
-Building on Unix with `git`, `gcc` and `autotools`
---------------------------------------------------
-
-Home page for json-c: https://github.com/json-c/json-c/wiki
-
-Caution: do **NOT** use sources from svn.metaparadigm.com,
-they are old.
-
-Prerequisites:
-
- - `gcc`, `clang`, or another C compiler
- - `libtool`
-
-If you're not using a release tarball, you'll also need:
-
- - `autoconf` (`autoreconf`)
- - `automake`
-
-Make sure you have a complete `libtool` install, including `libtoolize`.
-
-`json-c` GitHub repo: https://github.com/json-c/json-c
-
-```bash
-$ git clone https://github.com/json-c/json-c.git
-$ cd json-c
-$ sh autogen.sh
-```
-
-followed by
-
-```bash
-$ ./configure
-$ make
-$ make install
-```
-
-To build and run the test programs:
-
-```bash
-$ make check
-```
-
-Linking to `libjson-c`
-----------------------
-
-If your system has `pkgconfig`,
-then you can just add this to your `makefile`:
-
-```make
-CFLAGS += $(shell pkg-config --cflags json-c)
-LDFLAGS += $(shell pkg-config --libs json-c)
-```
-
-Without `pkgconfig`, you would do something like this:
-
-```make
-JSON_C_DIR=/path/to/json_c/install
-CFLAGS += -I$(JSON_C_DIR)/include/json-c
-LDFLAGS+= -L$(JSON_C_DIR)/lib -ljson-c
-```
diff --git a/json-c/RELEASE_CHECKLIST.txt b/json-c/RELEASE_CHECKLIST.txt
deleted file mode 100644
index 47132582..00000000
--- a/json-c/RELEASE_CHECKLIST.txt
+++ /dev/null
@@ -1,132 +0,0 @@
-
-Release checklist:
-
-release=0.12
-git clone https://github.com/json-c/json-c json-c-${release}
-cd json-c-${release}
-
-Check that the compile works on Linux
-Check that the compile works on NetBSD
-Check that the compile works on Windows
-Check ChangeLog to see if anything should be added.
-Make any fixes/changes *before* branching.
-
- git branch json-c-${release}
- git checkout json-c-${release}
-
-------------
-
-Update the version in json_c_version.h
-Update the version in Doxyfile
-Update the version in configure.ac
- Use ${release}.
-
-Update the libjson_la_LDFLAGS line in Makefile.am to the new version.
- Generally, unless we're doing a major release, change:
- -version-info x:y:z
- to
- -version-info x:y+1:z
-
-------------
-
-Generate the configure script and other files:
- sh autogen.sh
- git add -f Makefile.in aclocal.m4 config.guess \
- config.sub configure depcomp install-sh \
- ltmain.sh missing tests/Makefile.in \
- INSTALL
-
- # check for anything else to be added:
- git status --ignored
- git commit
-
-------------
-
-Generate the doxygen documentation:
- doxygen
- git add -f doc
- git commit doc
-
-------------
-
-cd ..
-echo .git > excludes
-echo autom4te.cache >> excludes
-tar -czf json-c-${release}.tar.gz -X excludes json-c-${release}
-
-echo doc >> excludes
-tar -czf json-c-${release}-nodoc.tar.gz -X excludes json-c-${release}
-
-------------
-
-Tag the branch:
-cd json-c-${release}
-git tag -a json-c-${release}-$(date +%Y%m%d) -m "Release json-c-${release}"
-
-git push origin json-c-${release}
-git push --tags
-
-------------
-
-Go to Amazon S3 service at:
- https://console.aws.amazon.com/s3/
-
-Upload the two tarballs in the json-c_releases folder.
- When uploading, use "Reduced Redundancy", and make the uploaded files publicly accessible.
-
-Logout of Amazon S3, and verify that the files are visible.
- https://s3.amazonaws.com/json-c_releases/releases/index.html
-
-===================================
-
-Post-release checklist:
-
-git checkout master
-Add new section to ChangeLog
-Update the version in json_c_version.h
-Update the version in Doxyfile
-Update the version in configure.ac
- Use ${release}.99 to indicate a version "newer" than anything on the branch.
-
-Leave the libjson_la_LDFLAGS line in Makefile.am alone.
- For more details see:
- http://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html
-
-------------
-
-Update the gh-pages branch with new docs:
-
-cd json-c-${release}
-git checkout json-c-${release}
-cd ..
-
-git clone -b gh-pages https://github.com/json-c/json-c json-c-pages
-cd json-c-pages
-mkdir json-c-${release}
-cp -R ../json-c-${release}/doc json-c-${release}/.
-cp ../json-c-${release}/README-WIN32.html json-c-${release}/.
-git add json-c-${release}
-git commit
-
-vi index.html
- Add/change links to current release.
-
-git commit index.html
-
-git push
-
-------------
-
-Update checksums on wiki page.
-
-cd ..
-openssl sha -sha256 json-c*gz
-openssl md5 json-c*gz
-
-Copy and paste this output into the wiki page at:
- https://github.com/json-c/json-c/wiki
-
-------------
-
-Send an email to the mailing list.
-
diff --git a/json-c/arraylist.c b/json-c/arraylist.c
deleted file mode 100644
index 1d899fa9..00000000
--- a/json-c/arraylist.c
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * $Id: arraylist.c,v 1.4 2006/01/26 02:16:28 mclark Exp $
- *
- * Copyright (c) 2004, 2005 Metaparadigm Pte. Ltd.
- * Michael Clark <michael@metaparadigm.com>
- *
- * This library is free software; you can redistribute it and/or modify
- * it under the terms of the MIT license. See COPYING for details.
- *
- */
-
-#include "config.h"
-
-#ifdef STDC_HEADERS
-# include <stdlib.h>
-# include <string.h>
-#endif /* STDC_HEADERS */
-
-#if defined(HAVE_STRINGS_H) && !defined(_STRING_H) && !defined(__USE_BSD)
-# include <strings.h>
-#endif /* HAVE_STRINGS_H */
-
-#include "arraylist.h"
-
-struct array_list*
-array_list_new(array_list_free_fn *free_fn)
-{
- struct array_list *arr;
-
- arr = (struct array_list*)calloc(1, sizeof(struct array_list));
- if(!arr) return NULL;
- arr->size = ARRAY_LIST_DEFAULT_SIZE;
- arr->length = 0;
- arr->free_fn = free_fn;
- if(!(arr->array = (void**)calloc(sizeof(void*), arr->size))) {
- free(arr);
- return NULL;
- }
- return arr;
-}
-
-extern void
-array_list_free(struct array_list *arr)
-{
- int i;
- for(i = 0; i < arr->length; i++)
- if(arr->array[i]) arr->free_fn(arr->array[i]);
- free(arr->array);
- free(arr);
-}
-
-void*
-array_list_get_idx(struct array_list *arr, int i)
-{
- if(i >= arr->length) return NULL;
- return arr->array[i];
-}
-
-static int array_list_expand_internal(struct array_list *arr, int max)
-{
- void *t;
- int new_size;
-
- if(max < arr->size) return 0;
- new_size = arr->size << 1;
- if (new_size < max)
- new_size = max;
- if(!(t = realloc(arr->array, new_size*sizeof(void*)))) return -1;
- arr->array = (void**)t;
- (void)memset(arr->array + arr->size, 0, (new_size-arr->size)*sizeof(void*));
- arr->size = new_size;
- return 0;
-}
-
-int
-array_list_put_idx(struct array_list *arr, int idx, void *data)
-{
- if(array_list_expand_internal(arr, idx+1)) return -1;
- if(arr->array[idx]) arr->free_fn(arr->array[idx]);
- arr->array[idx] = data;
- if(arr->length <= idx) arr->length = idx + 1;
- return 0;
-}
-
-int
-array_list_add(struct array_list *arr, void *data)
-{
- return array_list_put_idx(arr, arr->length, data);
-}
-
-void
-array_list_sort(struct array_list *arr, int(*sort_fn)(const void *, const void *))
-{
- qsort(arr->array, arr->length, sizeof(arr->array[0]),
- (int (*)(const void *, const void *))sort_fn);
-}
-
-int
-array_list_length(struct array_list *arr)
-{
- return arr->length;
-}
diff --git a/json-c/arraylist.h b/json-c/arraylist.h
deleted file mode 100644
index 4f3113c0..00000000
--- a/json-c/arraylist.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * $Id: arraylist.h,v 1.4 2006/01/26 02:16:28 mclark Exp $
- *
- * Copyright (c) 2004, 2005 Metaparadigm Pte. Ltd.
- * Michael Clark <michael@metaparadigm.com>
- *
- * This library is free software; you can redistribute it and/or modify
- * it under the terms of the MIT license. See COPYING for details.
- *
- */
-
-#ifndef _arraylist_h_
-#define _arraylist_h_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define ARRAY_LIST_DEFAULT_SIZE 32
-
-typedef void (array_list_free_fn) (void *data);
-
-struct array_list
-{
- void **array;
- int length;
- int size;
- array_list_free_fn *free_fn;
-};
-
-extern struct array_list*
-array_list_new(array_list_free_fn *free_fn);
-
-extern void
-array_list_free(struct array_list *al);
-
-extern void*
-array_list_get_idx(struct array_list *al, int i);
-
-extern int
-array_list_put_idx(struct array_list *al, int i, void *data);
-
-extern int
-array_list_add(struct array_list *al, void *data);
-
-extern int
-array_list_length(struct array_list *al);
-
-extern void
-array_list_sort(struct array_list *arr, int(*compar)(const void *, const void *));
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/json-c/autogen.sh b/json-c/autogen.sh
deleted file mode 100755
index 69e765a6..00000000
--- a/json-c/autogen.sh
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/bin/sh
-autoreconf -v --install || exit 1
-
-# If there are any options, assume the user wants to run configure.
-# To run configure w/o any options, use ./autogen.sh --configure
-if [ $# -gt 0 ] ; then
- case "$1" in
- --conf*)
- shift 1
- ;;
- esac
- exec ./configure "$@"
-fi
diff --git a/json-c/bits.h b/json-c/bits.h
deleted file mode 100644
index d14a1db0..00000000
--- a/json-c/bits.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/**
- * @file
- * @deprecated Use json_util.h instead.
- *
- * $Id: bits.h,v 1.10 2006/01/30 23:07:57 mclark Exp $
- *
- * Copyright (c) 2004, 2005 Metaparadigm Pte. Ltd.
- * Michael Clark <michael@metaparadigm.com>
- *
- * This library is free software; you can redistribute it and/or modify
- * it under the terms of the MIT license. See COPYING for details.
- *
- */
-
-#ifndef _bits_h_
-#define _bits_h_
-
-/**
- * @deprecated
- */
-#define hexdigit(x) (((x) <= '9') ? (x) - '0' : ((x) & 7) + 9)
-/**
- * @deprecated
- */
-#define error_ptr(error) ((void*)error)
-/**
- * @deprecated
- */
-#define error_description(error) (json_tokener_get_error(error))
-/**
- * @deprecated
- */
-#define is_error(ptr) (ptr == NULL)
-
-#endif
diff --git a/json-c/check.log b/json-c/check.log
deleted file mode 100644
index 3c73d2ae..00000000
--- a/json-c/check.log
+++ /dev/null
@@ -1,2 +0,0 @@
-HEAD is now at 6442a2f... json-c: Add libjson to the vendor image
-HEAD is now at 6442a2f... json-c: Add libjson to the vendor image
diff --git a/json-c/config.h b/json-c/config.h
deleted file mode 100644
index f958d440..00000000
--- a/json-c/config.h
+++ /dev/null
@@ -1,178 +0,0 @@
-/* config.h. Generated from config.h.in by configure. */
-/* config.h.in. Generated from configure.ac by autoheader. */
-
-/* Enable RDRANR Hardware RNG Hash Seed */
-/* #undef ENABLE_RDRAND */
-
-/* Define if .gnu.warning accepts long strings. */
-/* #undef HAS_GNU_WARNING_LONG */
-
-/* Define to 1 if you have the declaration of `INFINITY', and to 0 if you
- don't. */
-#define HAVE_DECL_INFINITY 1
-
-/* Define to 1 if you have the declaration of `isinf', and to 0 if you don't.
- */
-#define HAVE_DECL_ISINF 1
-
-/* Define to 1 if you have the declaration of `isnan', and to 0 if you don't.
- */
-#define HAVE_DECL_ISNAN 1
-
-/* Define to 1 if you have the declaration of `nan', and to 0 if you don't. */
-#define HAVE_DECL_NAN 1
-
-/* Define to 1 if you have the declaration of `_finite', and to 0 if you
- don't. */
-#define HAVE_DECL__FINITE 0
-
-/* Define to 1 if you have the declaration of `_isnan', and to 0 if you don't.
- */
-#define HAVE_DECL__ISNAN 0
-
-/* Define to 1 if you have the <dlfcn.h> header file. */
-#define HAVE_DLFCN_H 1
-
-/* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */
-/* #undef HAVE_DOPRNT */
-
-/* Define to 1 if you have the <endian.h> header file. */
-#define HAVE_ENDIAN_H 1
-
-/* Define to 1 if you have the <fcntl.h> header file. */
-#define HAVE_FCNTL_H 1
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-#define HAVE_INTTYPES_H 1
-
-/* Define to 1 if you have the <limits.h> header file. */
-#define HAVE_LIMITS_H 1
-
-/* Define to 1 if you have the <locale.h> header file. */
-#define HAVE_LOCALE_H 1
-
-/* Define to 1 if your system has a GNU libc compatible `malloc' function, and
- to 0 otherwise. */
-#define HAVE_MALLOC 1
-
-/* Define to 1 if you have the <memory.h> header file. */
-#define HAVE_MEMORY_H 1
-
-/* Define to 1 if you have the `open' function. */
-#define HAVE_OPEN 1
-
-/* Define to 1 if your system has a GNU libc compatible `realloc' function,
- and to 0 otherwise. */
-#define HAVE_REALLOC 1
-
-/* Define to 1 if you have the `setlocale' function. */
-#define HAVE_SETLOCALE 1
-
-/* Define to 1 if you have the `snprintf' function. */
-#define HAVE_SNPRINTF 1
-
-/* Define to 1 if you have the <stdarg.h> header file. */
-#define HAVE_STDARG_H 1
-
-/* Define to 1 if you have the <stdint.h> header file. */
-#define HAVE_STDINT_H 1
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-#define HAVE_STDLIB_H 1
-
-/* Define to 1 if you have the `strcasecmp' function. */
-#define HAVE_STRCASECMP 1
-
-/* Define to 1 if you have the `strdup' function. */
-#define HAVE_STRDUP 1
-
-/* Define to 1 if you have the `strerror' function. */
-#define HAVE_STRERROR 1
-
-/* Define to 1 if you have the <strings.h> header file. */
-#define HAVE_STRINGS_H 1
-
-/* Define to 1 if you have the <string.h> header file. */
-#define HAVE_STRING_H 1
-
-/* Define to 1 if you have the `strncasecmp' function. */
-#define HAVE_STRNCASECMP 1
-
-/* Define to 1 if you have the <syslog.h> header file. */
-#define HAVE_SYSLOG_H 1
-
-/* Define to 1 if you have the <sys/cdefs.h> header file. */
-#define HAVE_SYS_CDEFS_H 1
-
-/* Define to 1 if you have the <sys/param.h> header file. */
-#define HAVE_SYS_PARAM_H 1
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-#define HAVE_SYS_STAT_H 1
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#define HAVE_SYS_TYPES_H 1
-
-/* Define to 1 if you have the <unistd.h> header file. */
-#define HAVE_UNISTD_H 1
-
-/* Define to 1 if you have the `vasprintf' function. */
-#define HAVE_VASPRINTF 1
-
-/* Define to 1 if you have the `vprintf' function. */
-#define HAVE_VPRINTF 1
-
-/* Define to 1 if you have the `vsnprintf' function. */
-#define HAVE_VSNPRINTF 1
-
-/* Define to 1 if you have the `vsyslog' function. */
-#define HAVE_VSYSLOG 1
-
-/* Public define for json_inttypes.h */
-#define JSON_C_HAVE_INTTYPES_H 1
-
-/* Define to the sub-directory in which libtool stores uninstalled libraries.
- */
-#define LT_OBJDIR ".libs/"
-
-/* Define to 1 if your C compiler doesn't accept -c and -o together. */
-/* #undef NO_MINUS_C_MINUS_O */
-
-/* Name of package */
-#define PACKAGE "json-c"
-
-/* Define to the address where bug reports for this package should be sent. */
-#define PACKAGE_BUGREPORT "json-c@googlegroups.com"
-
-/* Define to the full name of this package. */
-#define PACKAGE_NAME "json-c"
-
-/* Define to the full name and version of this package. */
-#define PACKAGE_STRING "json-c 0.12.99"
-
-/* Define to the one symbol short name of this package. */
-#define PACKAGE_TARNAME "json-c"
-
-/* Define to the home page for this package. */
-#define PACKAGE_URL ""
-
-/* Define to the version of this package. */
-#define PACKAGE_VERSION "0.12.99"
-
-/* Define to 1 if you have the ANSI C header files. */
-#define STDC_HEADERS 1
-
-/* Version number of package */
-#define VERSION "0.12.99"
-
-/* Define to empty if `const' does not conform to ANSI C. */
-/* #undef const */
-
-/* Define to rpl_malloc if the replacement function should be used. */
-/* #undef malloc */
-
-/* Define to rpl_realloc if the replacement function should be used. */
-/* #undef realloc */
-
-/* Define to `unsigned int' if <sys/types.h> does not define. */
-/* #undef size_t */
diff --git a/json-c/config.h.in b/json-c/config.h.in
deleted file mode 100644
index af2e5fc2..00000000
--- a/json-c/config.h.in
+++ /dev/null
@@ -1,177 +0,0 @@
-/* config.h.in. Generated from configure.ac by autoheader. */
-
-/* Enable RDRANR Hardware RNG Hash Seed */
-#undef ENABLE_RDRAND
-
-/* Define if .gnu.warning accepts long strings. */
-#undef HAS_GNU_WARNING_LONG
-
-/* Define to 1 if you have the declaration of `INFINITY', and to 0 if you
- don't. */
-#undef HAVE_DECL_INFINITY
-
-/* Define to 1 if you have the declaration of `isinf', and to 0 if you don't.
- */
-#undef HAVE_DECL_ISINF
-
-/* Define to 1 if you have the declaration of `isnan', and to 0 if you don't.
- */
-#undef HAVE_DECL_ISNAN
-
-/* Define to 1 if you have the declaration of `nan', and to 0 if you don't. */
-#undef HAVE_DECL_NAN
-
-/* Define to 1 if you have the declaration of `_finite', and to 0 if you
- don't. */
-#undef HAVE_DECL__FINITE
-
-/* Define to 1 if you have the declaration of `_isnan', and to 0 if you don't.
- */
-#undef HAVE_DECL__ISNAN
-
-/* Define to 1 if you have the <dlfcn.h> header file. */
-#undef HAVE_DLFCN_H
-
-/* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */
-#undef HAVE_DOPRNT
-
-/* Define to 1 if you have the <endian.h> header file. */
-#undef HAVE_ENDIAN_H
-
-/* Define to 1 if you have the <fcntl.h> header file. */
-#undef HAVE_FCNTL_H
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-#undef HAVE_INTTYPES_H
-
-/* Define to 1 if you have the <limits.h> header file. */
-#undef HAVE_LIMITS_H
-
-/* Define to 1 if you have the <locale.h> header file. */
-#undef HAVE_LOCALE_H
-
-/* Define to 1 if your system has a GNU libc compatible `malloc' function, and
- to 0 otherwise. */
-#undef HAVE_MALLOC
-
-/* Define to 1 if you have the <memory.h> header file. */
-#undef HAVE_MEMORY_H
-
-/* Define to 1 if you have the `open' function. */
-#undef HAVE_OPEN
-
-/* Define to 1 if your system has a GNU libc compatible `realloc' function,
- and to 0 otherwise. */
-#undef HAVE_REALLOC
-
-/* Define to 1 if you have the `setlocale' function. */
-#undef HAVE_SETLOCALE
-
-/* Define to 1 if you have the `snprintf' function. */
-#undef HAVE_SNPRINTF
-
-/* Define to 1 if you have the <stdarg.h> header file. */
-#undef HAVE_STDARG_H
-
-/* Define to 1 if you have the <stdint.h> header file. */
-#undef HAVE_STDINT_H
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-#undef HAVE_STDLIB_H
-
-/* Define to 1 if you have the `strcasecmp' function. */
-#undef HAVE_STRCASECMP
-
-/* Define to 1 if you have the `strdup' function. */
-#undef HAVE_STRDUP
-
-/* Define to 1 if you have the `strerror' function. */
-#undef HAVE_STRERROR
-
-/* Define to 1 if you have the <strings.h> header file. */
-#undef HAVE_STRINGS_H
-
-/* Define to 1 if you have the <string.h> header file. */
-#undef HAVE_STRING_H
-
-/* Define to 1 if you have the `strncasecmp' function. */
-#undef HAVE_STRNCASECMP
-
-/* Define to 1 if you have the <syslog.h> header file. */
-#undef HAVE_SYSLOG_H
-
-/* Define to 1 if you have the <sys/cdefs.h> header file. */
-#undef HAVE_SYS_CDEFS_H
-
-/* Define to 1 if you have the <sys/param.h> header file. */
-#undef HAVE_SYS_PARAM_H
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-#undef HAVE_SYS_STAT_H
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#undef HAVE_SYS_TYPES_H
-
-/* Define to 1 if you have the <unistd.h> header file. */
-#undef HAVE_UNISTD_H
-
-/* Define to 1 if you have the `vasprintf' function. */
-#undef HAVE_VASPRINTF
-
-/* Define to 1 if you have the `vprintf' function. */
-#undef HAVE_VPRINTF
-
-/* Define to 1 if you have the `vsnprintf' function. */
-#undef HAVE_VSNPRINTF
-
-/* Define to 1 if you have the `vsyslog' function. */
-#undef HAVE_VSYSLOG
-
-/* Public define for json_inttypes.h */
-#undef JSON_C_HAVE_INTTYPES_H
-
-/* Define to the sub-directory in which libtool stores uninstalled libraries.
- */
-#undef LT_OBJDIR
-
-/* Define to 1 if your C compiler doesn't accept -c and -o together. */
-#undef NO_MINUS_C_MINUS_O
-
-/* Name of package */
-#undef PACKAGE
-
-/* Define to the address where bug reports for this package should be sent. */
-#undef PACKAGE_BUGREPORT
-
-/* Define to the full name of this package. */
-#undef PACKAGE_NAME
-
-/* Define to the full name and version of this package. */
-#undef PACKAGE_STRING
-
-/* Define to the one symbol short name of this package. */
-#undef PACKAGE_TARNAME
-
-/* Define to the home page for this package. */
-#undef PACKAGE_URL
-
-/* Define to the version of this package. */
-#undef PACKAGE_VERSION
-
-/* Define to 1 if you have the ANSI C header files. */
-#undef STDC_HEADERS
-
-/* Version number of package */
-#undef VERSION
-
-/* Define to empty if `const' does not conform to ANSI C. */
-#undef const
-
-/* Define to rpl_malloc if the replacement function should be used. */
-#undef malloc
-
-/* Define to rpl_realloc if the replacement function should be used. */
-#undef realloc
-
-/* Define to `unsigned int' if <sys/types.h> does not define. */
-#undef size_t
diff --git a/json-c/configure.ac b/json-c/configure.ac
deleted file mode 100644
index c50f81bd..00000000
--- a/json-c/configure.ac
+++ /dev/null
@@ -1,107 +0,0 @@
-AC_PREREQ(2.52)
-
-# Process this file with autoconf to produce a configure script.
-AC_INIT([json-c], 0.12.99, [json-c@googlegroups.com])
-
-AM_INIT_AUTOMAKE
-
-AC_PROG_MAKE_SET
-
-AC_ARG_ENABLE(rdrand,
- AS_HELP_STRING([--enable-rdrand],
- [Enable RDRAND Hardware RNG Hash Seed generation on supported x86/x64 platforms.]),
-[if test x$enableval = xyes; then
- enable_rdrand=yes
- AC_DEFINE(ENABLE_RDRAND, 1, [Enable RDRANR Hardware RNG Hash Seed])
-fi])
-
-if test "x$enable_rdrand" = "xyes"; then
- AC_MSG_RESULT([RDRAND Hardware RNG Hash Seed enabled on supported x86/x64 platforms])
-else
- AC_MSG_RESULT([RDRAND Hardware RNG Hash Seed disabled. Use --enable-rdrand to enable])
-fi
-
-# Checks for programs.
-
-# Checks for libraries.
-
-# Checks for header files.
-AM_PROG_CC_C_O
-AC_CONFIG_HEADER(config.h)
-AC_CONFIG_HEADER(json_config.h)
-AC_HEADER_STDC
-AC_CHECK_HEADERS(fcntl.h limits.h strings.h syslog.h unistd.h [sys/cdefs.h] [sys/param.h] stdarg.h locale.h endian.h)
-AC_CHECK_HEADER(inttypes.h,[AC_DEFINE([JSON_C_HAVE_INTTYPES_H],[1],[Public define for json_inttypes.h])])
-
-# Checks for typedefs, structures, and compiler characteristics.
-AC_C_CONST
-AC_TYPE_SIZE_T
-
-# Checks for library functions.
-AC_FUNC_VPRINTF
-AC_FUNC_MEMCMP
-AC_FUNC_MALLOC
-AC_FUNC_REALLOC
-AC_CHECK_FUNCS(strcasecmp strdup strerror snprintf vsnprintf vasprintf open vsyslog strncasecmp setlocale)
-AC_CHECK_DECLS([INFINITY], [], [], [[#include <math.h>]])
-AC_CHECK_DECLS([nan], [], [], [[#include <math.h>]])
-AC_CHECK_DECLS([isnan], [], [], [[#include <math.h>]])
-AC_CHECK_DECLS([isinf], [], [], [[#include <math.h>]])
-AC_CHECK_DECLS([_isnan], [], [], [[#include <float.h>]])
-AC_CHECK_DECLS([_finite], [], [], [[#include <float.h>]])
-
-#check if .section.gnu.warning accepts long strings (for __warn_references)
-AC_LANG_PUSH([C])
-
-AC_MSG_CHECKING([if .gnu.warning accepts long strings])
-AC_LINK_IFELSE([AC_LANG_SOURCE([[
-extern void json_object_get();
-__asm__(".section .gnu.json_object_get,\n\t.ascii \"Please link against libjson-c instead of libjson\"\n\t.text");
-
-int main(int c,char* v) {return 0;}
-]])], [
- AC_DEFINE(HAS_GNU_WARNING_LONG, 1, [Define if .gnu.warning accepts long strings.])
- AC_MSG_RESULT(yes)
-], [
- AC_MSG_RESULT(no)
-])
-
-AC_LANG_POP([C])
-
-AM_PROG_LIBTOOL
-
-# Check for the -Bsymbolic-functions linker flag
-AC_ARG_ENABLE([Bsymbolic],
- [AS_HELP_STRING([--disable-Bsymbolic], [Avoid linking with -Bsymbolic-function])],
- [],
- [enable_Bsymbolic=check])
-
-AS_IF([test "x$enable_Bsymbolic" = "xcheck"],
- [
- saved_LDFLAGS="${LDFLAGS}"
- AC_MSG_CHECKING([for -Bsymbolic-functions linker flag])
- LDFLAGS=-Wl,-Bsymbolic-functions
- AC_TRY_LINK([], [int main (void) { return 0; }],
- [
- AC_MSG_RESULT([yes])
- enable_Bsymbolic=yes
- ],
- [
- AC_MSG_RESULT([no])
- enable_Bsymbolic=no
- ])
- LDFLAGS="${saved_LDFLAGS}"
- ])
-
-AS_IF([test "x$enable_Bsymbolic" = "xyes"], [JSON_BSYMBOLIC_LDFLAGS=-Wl[,]-Bsymbolic-functions])
-AC_SUBST(JSON_BSYMBOLIC_LDFLAGS)
-
-AC_CONFIG_FILES([
-Makefile
-json-c.pc
-tests/Makefile
-json-c-uninstalled.pc
-])
-
-AC_OUTPUT
-
diff --git a/json-c/debug.c b/json-c/debug.c
deleted file mode 100644
index 3b64b590..00000000
--- a/json-c/debug.c
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * $Id: debug.c,v 1.5 2006/01/26 02:16:28 mclark Exp $
- *
- * Copyright (c) 2004, 2005 Metaparadigm Pte. Ltd.
- * Michael Clark <michael@metaparadigm.com>
- *
- * This library is free software; you can redistribute it and/or modify
- * it under the terms of the MIT license. See COPYING for details.
- *
- */
-
-#include "config.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <stdarg.h>
-
-#if HAVE_SYSLOG_H
-# include <syslog.h>
-#endif /* HAVE_SYSLOG_H */
-
-#if HAVE_UNISTD_H
-# include <unistd.h>
-#endif /* HAVE_UNISTD_H */
-
-#if HAVE_SYS_PARAM_H
-#include <sys/param.h>
-#endif /* HAVE_SYS_PARAM_H */
-
-#include "debug.h"
-
-static int _syslog = 0;
-static int _debug = 0;
-
-void mc_set_debug(int debug) { _debug = debug; }
-int mc_get_debug(void) { return _debug; }
-
-extern void mc_set_syslog(int syslog)
-{
- _syslog = syslog;
-}
-
-void mc_debug(const char *msg, ...)
-{
- va_list ap;
- if(_debug) {
- va_start(ap, msg);
-#if HAVE_VSYSLOG
- if(_syslog) {
- vsyslog(LOG_DEBUG, msg, ap);
- } else
-#endif
- vprintf(msg, ap);
- va_end(ap);
- }
-}
-
-void mc_error(const char *msg, ...)
-{
- va_list ap;
- va_start(ap, msg);
-#if HAVE_VSYSLOG
- if(_syslog) {
- vsyslog(LOG_ERR, msg, ap);
- } else
-#endif
- vfprintf(stderr, msg, ap);
- va_end(ap);
-}
-
-void mc_info(const char *msg, ...)
-{
- va_list ap;
- va_start(ap, msg);
-#if HAVE_VSYSLOG
- if(_syslog) {
- vsyslog(LOG_INFO, msg, ap);
- } else
-#endif
- vfprintf(stderr, msg, ap);
- va_end(ap);
-}
diff --git a/json-c/debug.h b/json-c/debug.h
deleted file mode 100644
index 80ca3e43..00000000
--- a/json-c/debug.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * $Id: debug.h,v 1.5 2006/01/30 23:07:57 mclark Exp $
- *
- * Copyright (c) 2004, 2005 Metaparadigm Pte. Ltd.
- * Michael Clark <michael@metaparadigm.com>
- * Copyright (c) 2009 Hewlett-Packard Development Company, L.P.
- *
- * This library is free software; you can redistribute it and/or modify
- * it under the terms of the MIT license. See COPYING for details.
- *
- */
-
-#ifndef _DEBUG_H_
-#define _DEBUG_H_
-
-#include <stdlib.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-extern void mc_set_debug(int debug);
-extern int mc_get_debug(void);
-
-extern void mc_set_syslog(int syslog);
-
-extern void mc_debug(const char *msg, ...);
-extern void mc_error(const char *msg, ...);
-extern void mc_info(const char *msg, ...);
-
-#ifndef __STRING
-#define __STRING(x) #x
-#endif
-
-#ifndef PARSER_BROKEN_FIXED
-
-#define JASSERT(cond) do {} while(0)
-
-#else
-
-#define JASSERT(cond) do { \
- if (!(cond)) { \
- mc_error("cjson assert failure %s:%d : cond \"" __STRING(cond) "failed\n", __FILE__, __LINE__); \
- *(int *)0 = 1;\
- abort(); \
- }\
- } while(0)
-
-#endif
-
-#define MC_ERROR(x, ...) mc_error(x, ##__VA_ARGS__)
-
-#ifdef MC_MAINTAINER_MODE
-#define MC_SET_DEBUG(x) mc_set_debug(x)
-#define MC_GET_DEBUG() mc_get_debug()
-#define MC_SET_SYSLOG(x) mc_set_syslog(x)
-#define MC_DEBUG(x, ...) mc_debug(x, ##__VA_ARGS__)
-#define MC_INFO(x, ...) mc_info(x, ##__VA_ARGS__)
-#else
-#define MC_SET_DEBUG(x) if (0) mc_set_debug(x)
-#define MC_GET_DEBUG() (0)
-#define MC_SET_SYSLOG(x) if (0) mc_set_syslog(x)
-#define MC_DEBUG(x, ...) if (0) mc_debug(x, ##__VA_ARGS__)
-#define MC_INFO(x, ...) if (0) mc_info(x, ##__VA_ARGS__)
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/json-c/json-c-uninstalled.pc.in b/json-c/json-c-uninstalled.pc.in
deleted file mode 100644
index dab2bab5..00000000
--- a/json-c/json-c-uninstalled.pc.in
+++ /dev/null
@@ -1,11 +0,0 @@
-prefix=
-exec_prefix=
-libdir=@abs_top_builddir@
-includedir=@abs_top_srcdir@
-
-Name: json
-Description: JSON implementation in C
-Version: @VERSION@
-Requires:
-Libs: -L@abs_top_builddir@ -ljson-c
-Cflags: -I@abs_top_srcdir@
diff --git a/json-c/json-c.pc.in b/json-c/json-c.pc.in
deleted file mode 100644
index 037739d2..00000000
--- a/json-c/json-c.pc.in
+++ /dev/null
@@ -1,11 +0,0 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: json-c
-Description: JSON implementation in C
-Version: @VERSION@
-Requires:
-Libs: -L${libdir} -ljson-c
-Cflags: -I${includedir}/json-c
diff --git a/json-c/json.h b/json-c/json.h
deleted file mode 100644
index e198f5da..00000000
--- a/json-c/json.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * $Id: json.h,v 1.6 2006/01/26 02:16:28 mclark Exp $
- *
- * Copyright (c) 2004, 2005 Metaparadigm Pte. Ltd.
- * Michael Clark <michael@metaparadigm.com>
- * Copyright (c) 2009 Hewlett-Packard Development Company, L.P.
- *
- * This library is free software; you can redistribute it and/or modify
- * it under the terms of the MIT license. See COPYING for details.
- *
- */
-
-#ifndef _json_h_
-#define _json_h_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "debug.h"
-#include "linkhash.h"
-#include "arraylist.h"
-#include "json_util.h"
-#include "json_object.h"
-#include "json_tokener.h"
-#include "json_object_iterator.h"
-#include "json_c_version.h"
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/json-c/json_c_version.c b/json-c/json_c_version.c
deleted file mode 100644
index 13eb1885..00000000
--- a/json-c/json_c_version.c
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (c) 2012 Eric Haszlakiewicz
- *
- * This library is free software; you can redistribute it and/or modify
- * it under the terms of the MIT license. See COPYING for details.
- */
-#include "config.h"
-
-#include "json_c_version.h"
-
-const char *json_c_version(void)
-{
- return JSON_C_VERSION;
-}
-
-int json_c_version_num(void)
-{
- return JSON_C_VERSION_NUM;
-}
-
diff --git a/json-c/json_c_version.h b/json-c/json_c_version.h
deleted file mode 100644
index d77f1a74..00000000
--- a/json-c/json_c_version.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Copyright (c) 2012 Eric Haszlakiewicz
- *
- * This library is free software; you can redistribute it and/or modify
- * it under the terms of the MIT license. See COPYING for details.
- */
-
-#ifndef _json_c_version_h_
-#define _json_c_version_h_
-
-#define JSON_C_MAJOR_VERSION 0
-#define JSON_C_MINOR_VERSION 12
-#define JSON_C_MICRO_VERSION 99
-#define JSON_C_VERSION_NUM ((JSON_C_MAJOR_VERSION << 16) | \
- (JSON_C_MINOR_VERSION << 8) | \
- JSON_C_MICRO_VERSION)
-#define JSON_C_VERSION "0.12.99"
-
-const char *json_c_version(void); /* Returns JSON_C_VERSION */
-int json_c_version_num(void); /* Returns JSON_C_VERSION_NUM */
-
-#endif
diff --git a/json-c/json_config.h b/json-c/json_config.h
deleted file mode 100644
index 965ff1c3..00000000
--- a/json-c/json_config.h
+++ /dev/null
@@ -1,4 +0,0 @@
-/* json_config.h. Generated from json_config.h.in by configure. */
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-#define JSON_C_HAVE_INTTYPES_H 1
diff --git a/json-c/json_config.h.in b/json-c/json_config.h.in
deleted file mode 100644
index 7888e021..00000000
--- a/json-c/json_config.h.in
+++ /dev/null
@@ -1,3 +0,0 @@
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-#undef JSON_C_HAVE_INTTYPES_H
diff --git a/json-c/json_inttypes.h b/json-c/json_inttypes.h
deleted file mode 100644
index 9de8d246..00000000
--- a/json-c/json_inttypes.h
+++ /dev/null
@@ -1,28 +0,0 @@
-
-#ifndef _json_inttypes_h_
-#define _json_inttypes_h_
-
-#include "json_config.h"
-
-#if defined(_MSC_VER) && _MSC_VER <= 1700
-
-/* Anything less than Visual Studio C++ 10 is missing stdint.h and inttypes.h */
-typedef __int32 int32_t;
-#define INT32_MIN ((int32_t)_I32_MIN)
-#define INT32_MAX ((int32_t)_I32_MAX)
-typedef __int64 int64_t;
-#define INT64_MIN ((int64_t)_I64_MIN)
-#define INT64_MAX ((int64_t)_I64_MAX)
-#define PRId64 "I64d"
-#define SCNd64 "I64d"
-
-#else
-
-#ifdef JSON_C_HAVE_INTTYPES_H
-#include <inttypes.h>
-#endif
-/* inttypes.h includes stdint.h */
-
-#endif
-
-#endif
diff --git a/json-c/json_object.c b/json-c/json_object.c
deleted file mode 100644
index 8ed02398..00000000
--- a/json-c/json_object.c
+++ /dev/null
@@ -1,913 +0,0 @@
-/*
- * $Id: json_object.c,v 1.17 2006/07/25 03:24:50 mclark Exp $
- *
- * Copyright (c) 2004, 2005 Metaparadigm Pte. Ltd.
- * Michael Clark <michael@metaparadigm.com>
- * Copyright (c) 2009 Hewlett-Packard Development Company, L.P.
- *
- * This library is free software; you can redistribute it and/or modify
- * it under the terms of the MIT license. See COPYING for details.
- *
- */
-
-#include "config.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <stddef.h>
-#include <string.h>
-#include <math.h>
-#include <errno.h>
-
-#include "debug.h"
-#include "printbuf.h"
-#include "linkhash.h"
-#include "arraylist.h"
-#include "json_inttypes.h"
-#include "json_object.h"
-#include "json_object_private.h"
-#include "json_util.h"
-#include "math_compat.h"
-
-#if !defined(HAVE_STRDUP) && defined(_MSC_VER)
- /* MSC has the version as _strdup */
-# define strdup _strdup
-#elif !defined(HAVE_STRDUP)
-# error You do not have strdup on your system.
-#endif /* HAVE_STRDUP */
-
-#if !defined(HAVE_SNPRINTF) && defined(_MSC_VER)
- /* MSC has the version as _snprintf */
-# define snprintf _snprintf
-#elif !defined(HAVE_SNPRINTF)
-# error You do not have snprintf on your system.
-#endif /* HAVE_SNPRINTF */
-
-// Don't define this. It's not thread-safe.
-/* #define REFCOUNT_DEBUG 1 */
-
-const char *json_number_chars = "0123456789.+-eE";
-const char *json_hex_chars = "0123456789abcdefABCDEF";
-
-static void json_object_generic_delete(struct json_object* jso);
-static struct json_object* json_object_new(enum json_type o_type);
-
-static json_object_to_json_string_fn json_object_object_to_json_string;
-static json_object_to_json_string_fn json_object_boolean_to_json_string;
-static json_object_to_json_string_fn json_object_int_to_json_string;
-static json_object_to_json_string_fn json_object_double_to_json_string;
-static json_object_to_json_string_fn json_object_string_to_json_string;
-static json_object_to_json_string_fn json_object_array_to_json_string;
-
-
-/* ref count debugging */
-
-#ifdef REFCOUNT_DEBUG
-
-static struct lh_table *json_object_table;
-
-static void json_object_init(void) __attribute__ ((constructor));
-static void json_object_init(void) {
- MC_DEBUG("json_object_init: creating object table\n");
- json_object_table = lh_kptr_table_new(128, "json_object_table", NULL);
-}
-
-static void json_object_fini(void) __attribute__ ((destructor));
-static void json_object_fini(void)
-{
- struct lh_entry *ent;
- if (MC_GET_DEBUG())
- {
- if (json_object_table->count)
- {
- MC_DEBUG("json_object_fini: %d referenced objects at exit\n",
- json_object_table->count);
- lh_foreach(json_object_table, ent)
- {
- struct json_object* obj = (struct json_object*)ent->v;
- MC_DEBUG("\t%s:%p\n", json_type_to_name(obj->o_type), obj);
- }
- }
- }
- MC_DEBUG("json_object_fini: freeing object table\n");
- lh_table_free(json_object_table);
-}
-#endif /* REFCOUNT_DEBUG */
-
-
-/* string escaping */
-
-static int json_escape_str(struct printbuf *pb, char *str, int len)
-{
- int pos = 0, start_offset = 0;
- unsigned char c;
- while (len--)
- {
- c = str[pos];
- switch(c)
- {
- case '\b':
- case '\n':
- case '\r':
- case '\t':
- case '\f':
- case '"':
- case '\\':
- case '/':
- if(pos - start_offset > 0)
- printbuf_memappend(pb, str + start_offset, pos - start_offset);
-
- if(c == '\b') printbuf_memappend(pb, "\\b", 2);
- else if(c == '\n') printbuf_memappend(pb, "\\n", 2);
- else if(c == '\r') printbuf_memappend(pb, "\\r", 2);
- else if(c == '\t') printbuf_memappend(pb, "\\t", 2);
- else if(c == '\f') printbuf_memappend(pb, "\\f", 2);
- else if(c == '"') printbuf_memappend(pb, "\\\"", 2);
- else if(c == '\\') printbuf_memappend(pb, "\\\\", 2);
- else if(c == '/') printbuf_memappend(pb, "\\/", 2);
-
- start_offset = ++pos;
- break;
- default:
- if(c < ' ')
- {
- if(pos - start_offset > 0)
- printbuf_memappend(pb, str + start_offset, pos - start_offset);
- sprintbuf(pb, "\\u00%c%c",
- json_hex_chars[c >> 4],
- json_hex_chars[c & 0xf]);
- start_offset = ++pos;
- } else
- pos++;
- }
- }
- if (pos - start_offset > 0)
- printbuf_memappend(pb, str + start_offset, pos - start_offset);
- return 0;
-}
-
-
-/* reference counting */
-
-extern struct json_object* json_object_get(struct json_object *jso)
-{
- if (jso)
- jso->_ref_count++;
- return jso;
-}
-
-int json_object_put(struct json_object *jso)
-{
- if(jso)
- {
- jso->_ref_count--;
- if(!jso->_ref_count)
- {
- if (jso->_user_delete)
- jso->_user_delete(jso, jso->_userdata);
- jso->_delete(jso);
- return 1;
- }
- }
- return 0;
-}
-
-
-/* generic object construction and destruction parts */
-
-static void json_object_generic_delete(struct json_object* jso)
-{
-#ifdef REFCOUNT_DEBUG
- MC_DEBUG("json_object_delete_%s: %p\n",
- json_type_to_name(jso->o_type), jso);
- lh_table_delete(json_object_table, jso);
-#endif /* REFCOUNT_DEBUG */
- printbuf_free(jso->_pb);
- free(jso);
-}
-
-static struct json_object* json_object_new(enum json_type o_type)
-{
- struct json_object *jso;
-
- jso = (struct json_object*)calloc(sizeof(struct json_object), 1);
- if (!jso)
- return NULL;
- jso->o_type = o_type;
- jso->_ref_count = 1;
- jso->_delete = &json_object_generic_delete;
-#ifdef REFCOUNT_DEBUG
- lh_table_insert(json_object_table, jso, jso);
- MC_DEBUG("json_object_new_%s: %p\n", json_type_to_name(jso->o_type), jso);
-#endif /* REFCOUNT_DEBUG */
- return jso;
-}
-
-
-/* type checking functions */
-
-int json_object_is_type(struct json_object *jso, enum json_type type)
-{
- if (!jso)
- return (type == json_type_null);
- return (jso->o_type == type);
-}
-
-enum json_type json_object_get_type(struct json_object *jso)
-{
- if (!jso)
- return json_type_null;
- return jso->o_type;
-}
-
-/* set a custom conversion to string */
-
-void json_object_set_serializer(json_object *jso,
- json_object_to_json_string_fn to_string_func,
- void *userdata,
- json_object_delete_fn *user_delete)
-{
- // First, clean up any previously existing user info
- if (jso->_user_delete)
- {
- jso->_user_delete(jso, jso->_userdata);
- }
- jso->_userdata = NULL;
- jso->_user_delete = NULL;
-
- if (to_string_func == NULL)
- {
- // Reset to the standard serialization function
- switch(jso->o_type)
- {
- case json_type_null:
- jso->_to_json_string = NULL;
- break;
- case json_type_boolean:
- jso->_to_json_string = &json_object_boolean_to_json_string;
- break;
- case json_type_double:
- jso->_to_json_string = &json_object_double_to_json_string;
- break;
- case json_type_int:
- jso->_to_json_string = &json_object_int_to_json_string;
- break;
- case json_type_object:
- jso->_to_json_string = &json_object_object_to_json_string;
- break;
- case json_type_array:
- jso->_to_json_string = &json_object_array_to_json_string;
- break;
- case json_type_string:
- jso->_to_json_string = &json_object_string_to_json_string;
- break;
- }
- return;
- }
-
- jso->_to_json_string = to_string_func;
- jso->_userdata = userdata;
- jso->_user_delete = user_delete;
-}
-
-
-/* extended conversion to string */
-
-const char* json_object_to_json_string_ext(struct json_object *jso, int flags)
-{
- if (!jso)
- return "null";
-
- if ((!jso->_pb) && !(jso->_pb = printbuf_new()))
- return NULL;
-
- printbuf_reset(jso->_pb);
-
- if(jso->_to_json_string(jso, jso->_pb, 0, flags) < 0)
- return NULL;
-
- return jso->_pb->buf;
-}
-
-/* backwards-compatible conversion to string */
-
-const char* json_object_to_json_string(struct json_object *jso)
-{
- return json_object_to_json_string_ext(jso, JSON_C_TO_STRING_SPACED);
-}
-
-static void indent(struct printbuf *pb, int level, int flags)
-{
- if (flags & JSON_C_TO_STRING_PRETTY)
- {
- printbuf_memset(pb, -1, ' ', level * 2);
- }
-}
-
-/* json_object_object */
-
-static int json_object_object_to_json_string(struct json_object* jso,
- struct printbuf *pb,
- int level,
- int flags)
-{
- int had_children = 0;
- struct json_object_iter iter;
-
- sprintbuf(pb, "{" /*}*/);
- if (flags & JSON_C_TO_STRING_PRETTY)
- sprintbuf(pb, "\n");
- json_object_object_foreachC(jso, iter)
- {
- if (had_children)
- {
- sprintbuf(pb, ",");
- if (flags & JSON_C_TO_STRING_PRETTY)
- sprintbuf(pb, "\n");
- }
- had_children = 1;
- if (flags & JSON_C_TO_STRING_SPACED)
- sprintbuf(pb, " ");
- indent(pb, level+1, flags);
- sprintbuf(pb, "\"");
- json_escape_str(pb, iter.key, strlen(iter.key));
- if (flags & JSON_C_TO_STRING_SPACED)
- sprintbuf(pb, "\": ");
- else
- sprintbuf(pb, "\":");
- if(iter.val == NULL)
- sprintbuf(pb, "null");
- else
- iter.val->_to_json_string(iter.val, pb, level+1,flags);
- }
- if (flags & JSON_C_TO_STRING_PRETTY)
- {
- if (had_children)
- sprintbuf(pb, "\n");
- indent(pb,level,flags);
- }
- if (flags & JSON_C_TO_STRING_SPACED)
- return sprintbuf(pb, /*{*/ " }");
- else
- return sprintbuf(pb, /*{*/ "}");
-}
-
-
-static void json_object_lh_entry_free(struct lh_entry *ent)
-{
- free(ent->k);
- json_object_put((struct json_object*)ent->v);
-}
-
-static void json_object_object_delete(struct json_object* jso)
-{
- lh_table_free(jso->o.c_object);
- json_object_generic_delete(jso);
-}
-
-struct json_object* json_object_new_object(void)
-{
- struct json_object *jso = json_object_new(json_type_object);
- if (!jso)
- return NULL;
- jso->_delete = &json_object_object_delete;
- jso->_to_json_string = &json_object_object_to_json_string;
- jso->o.c_object = lh_kchar_table_new(JSON_OBJECT_DEF_HASH_ENTRIES,
- NULL, &json_object_lh_entry_free);
- if (!jso->o.c_object)
- {
- json_object_generic_delete(jso);
- errno = ENOMEM;
- return NULL;
- }
- return jso;
-}
-
-struct lh_table* json_object_get_object(struct json_object *jso)
-{
- if (!jso)
- return NULL;
- switch(jso->o_type)
- {
- case json_type_object:
- return jso->o.c_object;
- default:
- return NULL;
- }
-}
-
-void json_object_object_add(struct json_object* jso, const char *key,
- struct json_object *val)
-{
- // We lookup the entry and replace the value, rather than just deleting
- // and re-adding it, so the existing key remains valid.
- json_object *existing_value = NULL;
- struct lh_entry *existing_entry;
- existing_entry = lh_table_lookup_entry(jso->o.c_object, (void*)key);
- if (!existing_entry)
- {
- lh_table_insert(jso->o.c_object, strdup(key), val);
- return;
- }
- existing_value = (void *)existing_entry->v;
- if (existing_value)
- json_object_put(existing_value);
- existing_entry->v = val;
-}
-
-int json_object_object_length(struct json_object *jso)
-{
- return lh_table_length(jso->o.c_object);
-}
-
-struct json_object* json_object_object_get(struct json_object* jso, const char *key)
-{
- struct json_object *result = NULL;
- json_object_object_get_ex(jso, key, &result);
- return result;
-}
-
-json_bool json_object_object_get_ex(struct json_object* jso, const char *key, struct json_object **value)
-{
- if (value != NULL)
- *value = NULL;
-
- if (NULL == jso)
- return FALSE;
-
- switch(jso->o_type)
- {
- case json_type_object:
- return lh_table_lookup_ex(jso->o.c_object, (void*)key, (void**)value);
- default:
- if (value != NULL)
- *value = NULL;
- return FALSE;
- }
-}
-
-void json_object_object_del(struct json_object* jso, const char *key)
-{
- lh_table_delete(jso->o.c_object, key);
-}
-
-
-/* json_object_boolean */
-
-static int json_object_boolean_to_json_string(struct json_object* jso,
- struct printbuf *pb,
- int level,
- int flags)
-{
- if (jso->o.c_boolean)
- return sprintbuf(pb, "true");
- else
- return sprintbuf(pb, "false");
-}
-
-struct json_object* json_object_new_boolean(json_bool b)
-{
- struct json_object *jso = json_object_new(json_type_boolean);
- if (!jso)
- return NULL;
- jso->_to_json_string = &json_object_boolean_to_json_string;
- jso->o.c_boolean = b;
- return jso;
-}
-
-json_bool json_object_get_boolean(struct json_object *jso)
-{
- if (!jso)
- return FALSE;
- switch(jso->o_type)
- {
- case json_type_boolean:
- return jso->o.c_boolean;
- case json_type_int:
- return (jso->o.c_int64 != 0);
- case json_type_double:
- return (jso->o.c_double != 0);
- case json_type_string:
- return (jso->o.c_string.len != 0);
- default:
- return FALSE;
- }
-}
-
-
-/* json_object_int */
-
-static int json_object_int_to_json_string(struct json_object* jso,
- struct printbuf *pb,
- int level,
- int flags)
-{
- return sprintbuf(pb, "%"PRId64, jso->o.c_int64);
-}
-
-struct json_object* json_object_new_int(int32_t i)
-{
- struct json_object *jso = json_object_new(json_type_int);
- if (!jso)
- return NULL;
- jso->_to_json_string = &json_object_int_to_json_string;
- jso->o.c_int64 = i;
- return jso;
-}
-
-int32_t json_object_get_int(struct json_object *jso)
-{
- int64_t cint64;
- enum json_type o_type;
-
- if(!jso) return 0;
-
- o_type = jso->o_type;
- cint64 = jso->o.c_int64;
-
- if (o_type == json_type_string)
- {
- /*
- * Parse strings into 64-bit numbers, then use the
- * 64-to-32-bit number handling below.
- */
- if (json_parse_int64(jso->o.c_string.str, &cint64) != 0)
- return 0; /* whoops, it didn't work. */
- o_type = json_type_int;
- }
-
- switch(o_type) {
- case json_type_int:
- /* Make sure we return the correct values for out of range numbers. */
- if (cint64 <= INT32_MIN)
- return INT32_MIN;
- else if (cint64 >= INT32_MAX)
- return INT32_MAX;
- else
- return (int32_t)cint64;
- case json_type_double:
- return (int32_t)jso->o.c_double;
- case json_type_boolean:
- return jso->o.c_boolean;
- default:
- return 0;
- }
-}
-
-struct json_object* json_object_new_int64(int64_t i)
-{
- struct json_object *jso = json_object_new(json_type_int);
- if (!jso)
- return NULL;
- jso->_to_json_string = &json_object_int_to_json_string;
- jso->o.c_int64 = i;
- return jso;
-}
-
-int64_t json_object_get_int64(struct json_object *jso)
-{
- int64_t cint;
-
- if (!jso)
- return 0;
- switch(jso->o_type)
- {
- case json_type_int:
- return jso->o.c_int64;
- case json_type_double:
- return (int64_t)jso->o.c_double;
- case json_type_boolean:
- return jso->o.c_boolean;
- case json_type_string:
- if (json_parse_int64(jso->o.c_string.str, &cint) == 0)
- return cint;
- default:
- return 0;
- }
-}
-
-
-/* json_object_double */
-
-static int json_object_double_to_json_string(struct json_object* jso,
- struct printbuf *pb,
- int level,
- int flags)
-{
- char buf[128], *p, *q;
- int size;
- /* Although JSON RFC does not support
- NaN or Infinity as numeric values
- ECMA 262 section 9.8.1 defines
- how to handle these cases as strings */
- if(isnan(jso->o.c_double))
- size = snprintf(buf, sizeof(buf), "NaN");
- else if(isinf(jso->o.c_double))
- if(jso->o.c_double > 0)
- size = snprintf(buf, sizeof(buf), "Infinity");
- else
- size = snprintf(buf, sizeof(buf), "-Infinity");
- else
- size = snprintf(buf, sizeof(buf), "%.17g", jso->o.c_double);
-
- p = strchr(buf, ',');
- if (p) {
- *p = '.';
- } else {
- p = strchr(buf, '.');
- }
- if (p && (flags & JSON_C_TO_STRING_NOZERO)) {
- /* last useful digit, always keep 1 zero */
- p++;
- for (q=p ; *q ; q++) {
- if (*q!='0') p=q;
- }
- /* drop trailing zeroes */
- *(++p) = 0;
- size = p-buf;
- }
- printbuf_memappend(pb, buf, size);
- return size;
-}
-
-struct json_object* json_object_new_double(double d)
-{
- struct json_object *jso = json_object_new(json_type_double);
- if (!jso)
- return NULL;
- jso->_to_json_string = &json_object_double_to_json_string;
- jso->o.c_double = d;
- return jso;
-}
-
-struct json_object* json_object_new_double_s(double d, const char *ds)
-{
- struct json_object *jso = json_object_new_double(d);
- if (!jso)
- return NULL;
-
- char *new_ds = strdup(ds);
- if (!new_ds)
- {
- json_object_generic_delete(jso);
- errno = ENOMEM;
- return NULL;
- }
- json_object_set_serializer(jso, json_object_userdata_to_json_string,
- new_ds, json_object_free_userdata);
- return jso;
-}
-
-int json_object_userdata_to_json_string(struct json_object *jso,
- struct printbuf *pb, int level, int flags)
-{
- int userdata_len = strlen(jso->_userdata);
- printbuf_memappend(pb, jso->_userdata, userdata_len);
- return userdata_len;
-}
-
-void json_object_free_userdata(struct json_object *jso, void *userdata)
-{
- free(userdata);
-}
-
-double json_object_get_double(struct json_object *jso)
-{
- double cdouble;
- char *errPtr = NULL;
-
- if(!jso) return 0.0;
- switch(jso->o_type) {
- case json_type_double:
- return jso->o.c_double;
- case json_type_int:
- return jso->o.c_int64;
- case json_type_boolean:
- return jso->o.c_boolean;
- case json_type_string:
- errno = 0;
- cdouble = strtod(jso->o.c_string.str,&errPtr);
-
- /* if conversion stopped at the first character, return 0.0 */
- if (errPtr == jso->o.c_string.str)
- return 0.0;
-
- /*
- * Check that the conversion terminated on something sensible
- *
- * For example, { "pay" : 123AB } would parse as 123.
- */
- if (*errPtr != '\0')
- return 0.0;
-
- /*
- * If strtod encounters a string which would exceed the
- * capacity of a double, it returns +/- HUGE_VAL and sets
- * errno to ERANGE. But +/- HUGE_VAL is also a valid result
- * from a conversion, so we need to check errno.
- *
- * Underflow also sets errno to ERANGE, but it returns 0 in
- * that case, which is what we will return anyway.
- *
- * See CERT guideline ERR30-C
- */
- if ((HUGE_VAL == cdouble || -HUGE_VAL == cdouble) &&
- (ERANGE == errno))
- cdouble = 0.0;
- return cdouble;
- default:
- return 0.0;
- }
-}
-
-
-/* json_object_string */
-
-static int json_object_string_to_json_string(struct json_object* jso,
- struct printbuf *pb,
- int level,
- int flags)
-{
- sprintbuf(pb, "\"");
- json_escape_str(pb, jso->o.c_string.str, jso->o.c_string.len);
- sprintbuf(pb, "\"");
- return 0;
-}
-
-static void json_object_string_delete(struct json_object* jso)
-{
- free(jso->o.c_string.str);
- json_object_generic_delete(jso);
-}
-
-struct json_object* json_object_new_string(const char *s)
-{
- struct json_object *jso = json_object_new(json_type_string);
- if (!jso)
- return NULL;
- jso->_delete = &json_object_string_delete;
- jso->_to_json_string = &json_object_string_to_json_string;
- jso->o.c_string.str = strdup(s);
- if (!jso->o.c_string.str)
- {
- json_object_generic_delete(jso);
- errno = ENOMEM;
- return NULL;
- }
- jso->o.c_string.len = strlen(s);
- return jso;
-}
-
-struct json_object* json_object_new_string_len(const char *s, int len)
-{
- struct json_object *jso = json_object_new(json_type_string);
- if (!jso)
- return NULL;
- jso->_delete = &json_object_string_delete;
- jso->_to_json_string = &json_object_string_to_json_string;
- jso->o.c_string.str = (char*)malloc(len + 1);
- if (!jso->o.c_string.str)
- {
- json_object_generic_delete(jso);
- errno = ENOMEM;
- return NULL;
- }
- memcpy(jso->o.c_string.str, (void *)s, len);
- jso->o.c_string.str[len] = '\0';
- jso->o.c_string.len = len;
- return jso;
-}
-
-const char* json_object_get_string(struct json_object *jso)
-{
- if (!jso)
- return NULL;
- switch(jso->o_type)
- {
- case json_type_string:
- return jso->o.c_string.str;
- default:
- return json_object_to_json_string(jso);
- }
-}
-
-int json_object_get_string_len(struct json_object *jso)
-{
- if (!jso)
- return 0;
- switch(jso->o_type)
- {
- case json_type_string:
- return jso->o.c_string.len;
- default:
- return 0;
- }
-}
-
-
-/* json_object_array */
-
-static int json_object_array_to_json_string(struct json_object* jso,
- struct printbuf *pb,
- int level,
- int flags)
-{
- int had_children = 0;
- int ii;
- sprintbuf(pb, "[");
- if (flags & JSON_C_TO_STRING_PRETTY)
- sprintbuf(pb, "\n");
- for(ii=0; ii < json_object_array_length(jso); ii++)
- {
- struct json_object *val;
- if (had_children)
- {
- sprintbuf(pb, ",");
- if (flags & JSON_C_TO_STRING_PRETTY)
- sprintbuf(pb, "\n");
- }
- had_children = 1;
- if (flags & JSON_C_TO_STRING_SPACED)
- sprintbuf(pb, " ");
- indent(pb, level + 1, flags);
- val = json_object_array_get_idx(jso, ii);
- if(val == NULL)
- sprintbuf(pb, "null");
- else
- val->_to_json_string(val, pb, level+1, flags);
- }
- if (flags & JSON_C_TO_STRING_PRETTY)
- {
- if (had_children)
- sprintbuf(pb, "\n");
- indent(pb,level,flags);
- }
-
- if (flags & JSON_C_TO_STRING_SPACED)
- return sprintbuf(pb, " ]");
- else
- return sprintbuf(pb, "]");
-}
-
-static void json_object_array_entry_free(void *data)
-{
- json_object_put((struct json_object*)data);
-}
-
-static void json_object_array_delete(struct json_object* jso)
-{
- array_list_free(jso->o.c_array);
- json_object_generic_delete(jso);
-}
-
-struct json_object* json_object_new_array(void)
-{
- struct json_object *jso = json_object_new(json_type_array);
- if (!jso)
- return NULL;
- jso->_delete = &json_object_array_delete;
- jso->_to_json_string = &json_object_array_to_json_string;
- jso->o.c_array = array_list_new(&json_object_array_entry_free);
- return jso;
-}
-
-struct array_list* json_object_get_array(struct json_object *jso)
-{
- if (!jso)
- return NULL;
- switch(jso->o_type)
- {
- case json_type_array:
- return jso->o.c_array;
- default:
- return NULL;
- }
-}
-
-void json_object_array_sort(struct json_object *jso, int(*sort_fn)(const void *, const void *))
-{
- array_list_sort(jso->o.c_array, sort_fn);
-}
-
-int json_object_array_length(struct json_object *jso)
-{
- return array_list_length(jso->o.c_array);
-}
-
-int json_object_array_add(struct json_object *jso,struct json_object *val)
-{
- return array_list_add(jso->o.c_array, val);
-}
-
-int json_object_array_put_idx(struct json_object *jso, int idx,
- struct json_object *val)
-{
- return array_list_put_idx(jso->o.c_array, idx, val);
-}
-
-struct json_object* json_object_array_get_idx(struct json_object *jso,
- int idx)
-{
- return (struct json_object*)array_list_get_idx(jso->o.c_array, idx);
-}
-
diff --git a/json-c/json_object.h b/json-c/json_object.h
deleted file mode 100644
index 0dca0b1e..00000000
--- a/json-c/json_object.h
+++ /dev/null
@@ -1,617 +0,0 @@
-/*
- * $Id: json_object.h,v 1.12 2006/01/30 23:07:57 mclark Exp $
- *
- * Copyright (c) 2004, 2005 Metaparadigm Pte. Ltd.
- * Michael Clark <michael@metaparadigm.com>
- * Copyright (c) 2009 Hewlett-Packard Development Company, L.P.
- *
- * This library is free software; you can redistribute it and/or modify
- * it under the terms of the MIT license. See COPYING for details.
- *
- */
-
-#ifndef _json_object_h_
-#define _json_object_h_
-
-#ifdef __GNUC__
-#define THIS_FUNCTION_IS_DEPRECATED(func) func __attribute__ ((deprecated))
-#elif defined(_MSC_VER)
-#define THIS_FUNCTION_IS_DEPRECATED(func) __declspec(deprecated) func
-#else
-#define THIS_FUNCTION_IS_DEPRECATED(func) func
-#endif
-
-#include "json_inttypes.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define JSON_OBJECT_DEF_HASH_ENTRIES 16
-
-/**
- * A flag for the json_object_to_json_string_ext() and
- * json_object_to_file_ext() functions which causes the output
- * to have no extra whitespace or formatting applied.
- */
-#define JSON_C_TO_STRING_PLAIN 0
-/**
- * A flag for the json_object_to_json_string_ext() and
- * json_object_to_file_ext() functions which causes the output to have
- * minimal whitespace inserted to make things slightly more readable.
- */
-#define JSON_C_TO_STRING_SPACED (1<<0)
-/**
- * A flag for the json_object_to_json_string_ext() and
- * json_object_to_file_ext() functions which causes
- * the output to be formatted.
- *
- * See the "Two Space Tab" option at http://jsonformatter.curiousconcept.com/
- * for an example of the format.
- */
-#define JSON_C_TO_STRING_PRETTY (1<<1)
-/**
- * A flag to drop trailing zero for float values
- */
-#define JSON_C_TO_STRING_NOZERO (1<<2)
-
-#undef FALSE
-#define FALSE ((json_bool)0)
-
-#undef TRUE
-#define TRUE ((json_bool)1)
-
-extern const char *json_number_chars;
-extern const char *json_hex_chars;
-
-/* CAW: added for ANSI C iteration correctness */
-struct json_object_iter
-{
- char *key;
- struct json_object *val;
- struct lh_entry *entry;
-};
-
-/* forward structure definitions */
-
-typedef int json_bool;
-typedef struct printbuf printbuf;
-typedef struct lh_table lh_table;
-typedef struct array_list array_list;
-typedef struct json_object json_object;
-typedef struct json_object_iter json_object_iter;
-typedef struct json_tokener json_tokener;
-
-/**
- * Type of custom user delete functions. See json_object_set_serializer.
- */
-typedef void (json_object_delete_fn)(struct json_object *jso, void *userdata);
-
-/**
- * Type of a custom serialization function. See json_object_set_serializer.
- */
-typedef int (json_object_to_json_string_fn)(struct json_object *jso,
- struct printbuf *pb,
- int level,
- int flags);
-
-/* supported object types */
-
-typedef enum json_type {
- /* If you change this, be sure to update json_type_to_name() too */
- json_type_null,
- json_type_boolean,
- json_type_double,
- json_type_int,
- json_type_object,
- json_type_array,
- json_type_string
-} json_type;
-
-/* reference counting functions */
-
-/**
- * Increment the reference count of json_object, thereby grabbing shared
- * ownership of obj.
- *
- * @param obj the json_object instance
- */
-extern struct json_object* json_object_get(struct json_object *obj);
-
-/**
- * Decrement the reference count of json_object and free if it reaches zero.
- * You must have ownership of obj prior to doing this or you will cause an
- * imbalance in the reference count.
- *
- * @param obj the json_object instance
- * @returns 1 if the object was freed.
- */
-int json_object_put(struct json_object *obj);
-
-/**
- * Check if the json_object is of a given type
- * @param obj the json_object instance
- * @param type one of:
- json_type_null (i.e. obj == NULL),
- json_type_boolean,
- json_type_double,
- json_type_int,
- json_type_object,
- json_type_array,
- json_type_string
- */
-extern int json_object_is_type(struct json_object *obj, enum json_type type);
-
-/**
- * Get the type of the json_object. See also json_type_to_name() to turn this
- * into a string suitable, for instance, for logging.
- *
- * @param obj the json_object instance
- * @returns type being one of:
- json_type_null (i.e. obj == NULL),
- json_type_boolean,
- json_type_double,
- json_type_int,
- json_type_object,
- json_type_array,
- json_type_string
- */
-extern enum json_type json_object_get_type(struct json_object *obj);
-
-
-/** Stringify object to json format.
- * Equivalent to json_object_to_json_string_ext(obj, JSON_C_TO_STRING_SPACED)
- * The pointer you get is an internal of your json object. You don't
- * have to free it, later use of json_object_put() should be sufficient.
- * If you can not ensure there's no concurrent access to *obj use
- * strdup().
- * @param obj the json_object instance
- * @returns a string in JSON format
- */
-extern const char* json_object_to_json_string(struct json_object *obj);
-
-/** Stringify object to json format
- * @see json_object_to_json_string() for details on how to free string.
- * @param obj the json_object instance
- * @param flags formatting options, see JSON_C_TO_STRING_PRETTY and other constants
- * @returns a string in JSON format
- */
-extern const char* json_object_to_json_string_ext(struct json_object *obj, int
-flags);
-
-/**
- * Set a custom serialization function to be used when this particular object
- * is converted to a string by json_object_to_json_string.
- *
- * If a custom serializer is already set on this object, any existing
- * user_delete function is called before the new one is set.
- *
- * If to_string_func is NULL, the other parameters are ignored
- * and the default behaviour is reset.
- *
- * The userdata parameter is optional and may be passed as NULL. If provided,
- * it is passed to to_string_func as-is. This parameter may be NULL even
- * if user_delete is non-NULL.
- *
- * The user_delete parameter is optional and may be passed as NULL, even if
- * the userdata parameter is non-NULL. It will be called just before the
- * json_object is deleted, after it's reference count goes to zero
- * (see json_object_put()).
- * If this is not provided, it is up to the caller to free the userdata at
- * an appropriate time. (i.e. after the json_object is deleted)
- *
- * @param jso the object to customize
- * @param to_string_func the custom serialization function
- * @param userdata an optional opaque cookie
- * @param user_delete an optional function from freeing userdata
- */
-extern void json_object_set_serializer(json_object *jso,
- json_object_to_json_string_fn to_string_func,
- void *userdata,
- json_object_delete_fn *user_delete);
-
-/**
- * Simply call free on the userdata pointer.
- * Can be used with json_object_set_serializer().
- *
- * @param jso unused
- * @param userdata the pointer that is passed to free().
- */
-json_object_delete_fn json_object_free_userdata;
-
-/**
- * Copy the jso->_userdata string over to pb as-is.
- * Can be used with json_object_set_serializer().
- *
- * @param jso The object whose _userdata is used.
- * @param pb The destination buffer.
- * @param level Ignored.
- * @param flags Ignored.
- */
-json_object_to_json_string_fn json_object_userdata_to_json_string;
-
-
-/* object type methods */
-
-/** Create a new empty object with a reference count of 1. The caller of
- * this object initially has sole ownership. Remember, when using
- * json_object_object_add or json_object_array_put_idx, ownership will
- * transfer to the object/array. Call json_object_get if you want to maintain
- * shared ownership or also add this object as a child of multiple objects or
- * arrays. Any ownerships you acquired but did not transfer must be released
- * through json_object_put.
- *
- * @returns a json_object of type json_type_object
- */
-extern struct json_object* json_object_new_object(void);
-
-/** Get the hashtable of a json_object of type json_type_object
- * @param obj the json_object instance
- * @returns a linkhash
- */
-extern struct lh_table* json_object_get_object(struct json_object *obj);
-
-/** Get the size of an object in terms of the number of fields it has.
- * @param obj the json_object whose length to return
- */
-extern int json_object_object_length(struct json_object* obj);
-
-/** Add an object field to a json_object of type json_type_object
- *
- * The reference count will *not* be incremented. This is to make adding
- * fields to objects in code more compact. If you want to retain a reference
- * to an added object, independent of the lifetime of obj, you must wrap the
- * passed object with json_object_get.
- *
- * Upon calling this, the ownership of val transfers to obj. Thus you must
- * make sure that you do in fact have ownership over this object. For instance,
- * json_object_new_object will give you ownership until you transfer it,
- * whereas json_object_object_get does not.
- *
- * @param obj the json_object instance
- * @param key the object field name (a private copy will be duplicated)
- * @param val a json_object or NULL member to associate with the given field
- */
-extern void json_object_object_add(struct json_object* obj, const char *key,
- struct json_object *val);
-
-/** Get the json_object associate with a given object field
- *
- * *No* reference counts will be changed. There is no need to manually adjust
- * reference counts through the json_object_put/json_object_get methods unless
- * you need to have the child (value) reference maintain a different lifetime
- * than the owning parent (obj). Ownership of the returned value is retained
- * by obj (do not do json_object_put unless you have done a json_object_get).
- * If you delete the value from obj (json_object_object_del) and wish to access
- * the returned reference afterwards, make sure you have first gotten shared
- * ownership through json_object_get (& don't forget to do a json_object_put
- * or transfer ownership to prevent a memory leak).
- *
- * @param obj the json_object instance
- * @param key the object field name
- * @returns the json_object associated with the given field name
- * @deprecated Please use json_object_object_get_ex
- */
-THIS_FUNCTION_IS_DEPRECATED(extern struct json_object* json_object_object_get(struct json_object* obj,
- const char *key));
-
-/** Get the json_object associated with a given object field.
- *
- * This returns true if the key is found, false in all other cases (including
- * if obj isn't a json_type_object).
- *
- * *No* reference counts will be changed. There is no need to manually adjust
- * reference counts through the json_object_put/json_object_get methods unless
- * you need to have the child (value) reference maintain a different lifetime
- * than the owning parent (obj). Ownership of value is retained by obj.
- *
- * @param obj the json_object instance
- * @param key the object field name
- * @param value a pointer where to store a reference to the json_object
- * associated with the given field name.
- *
- * It is safe to pass a NULL value.
- * @returns whether or not the key exists
- */
-extern json_bool json_object_object_get_ex(struct json_object* obj,
- const char *key,
- struct json_object **value);
-
-/** Delete the given json_object field
- *
- * The reference count will be decremented for the deleted object. If there
- * are no more owners of the value represented by this key, then the value is
- * freed. Otherwise, the reference to the value will remain in memory.
- *
- * @param obj the json_object instance
- * @param key the object field name
- */
-extern void json_object_object_del(struct json_object* obj, const char *key);
-
-/**
- * Iterate through all keys and values of an object.
- *
- * Adding keys to the object while iterating is NOT allowed.
- *
- * Deleting an existing key, or replacing an existing key with a
- * new value IS allowed.
- *
- * @param obj the json_object instance
- * @param key the local name for the char* key variable defined in the body
- * @param val the local name for the json_object* object variable defined in
- * the body
- */
-#if defined(__GNUC__) && !defined(__STRICT_ANSI__) && __STDC_VERSION__ >= 199901L
-
-# define json_object_object_foreach(obj,key,val) \
- char *key; \
- struct json_object *val __attribute__((__unused__)); \
- for(struct lh_entry *entry ## key = json_object_get_object(obj)->head, *entry_next ## key = NULL; \
- ({ if(entry ## key) { \
- key = (char*)entry ## key->k; \
- val = (struct json_object*)entry ## key->v; \
- entry_next ## key = entry ## key->next; \
- } ; entry ## key; }); \
- entry ## key = entry_next ## key )
-
-#else /* ANSI C or MSC */
-
-# define json_object_object_foreach(obj,key,val) \
- char *key;\
- struct json_object *val; \
- struct lh_entry *entry ## key; \
- struct lh_entry *entry_next ## key = NULL; \
- for(entry ## key = json_object_get_object(obj)->head; \
- (entry ## key ? ( \
- key = (char*)entry ## key->k, \
- val = (struct json_object*)entry ## key->v, \
- entry_next ## key = entry ## key->next, \
- entry ## key) : 0); \
- entry ## key = entry_next ## key)
-
-#endif /* defined(__GNUC__) && !defined(__STRICT_ANSI__) && __STDC_VERSION__ >= 199901L */
-
-/** Iterate through all keys and values of an object (ANSI C Safe)
- * @param obj the json_object instance
- * @param iter the object iterator
- */
-#define json_object_object_foreachC(obj,iter) \
- for(iter.entry = json_object_get_object(obj)->head; (iter.entry ? (iter.key = (char*)iter.entry->k, iter.val = (struct json_object*)iter.entry->v, iter.entry) : 0); iter.entry = iter.entry->next)
-
-/* Array type methods */
-
-/** Create a new empty json_object of type json_type_array
- * @returns a json_object of type json_type_array
- */
-extern struct json_object* json_object_new_array(void);
-
-/** Get the arraylist of a json_object of type json_type_array
- * @param obj the json_object instance
- * @returns an arraylist
- */
-extern struct array_list* json_object_get_array(struct json_object *obj);
-
-/** Get the length of a json_object of type json_type_array
- * @param obj the json_object instance
- * @returns an int
- */
-extern int json_object_array_length(struct json_object *obj);
-
-/** Sorts the elements of jso of type json_type_array
-*
-* Pointers to the json_object pointers will be passed as the two arguments
-* to @sort_fn
-*
-* @param obj the json_object instance
-* @param sort_fn a sorting function
-*/
-extern void json_object_array_sort(struct json_object *jso, int(*sort_fn)(const void *, const void *));
-
-/** Add an element to the end of a json_object of type json_type_array
- *
- * The reference count will *not* be incremented. This is to make adding
- * fields to objects in code more compact. If you want to retain a reference
- * to an added object you must wrap the passed object with json_object_get
- *
- * @param obj the json_object instance
- * @param val the json_object to be added
- */
-extern int json_object_array_add(struct json_object *obj,
- struct json_object *val);
-
-/** Insert or replace an element at a specified index in an array (a json_object of type json_type_array)
- *
- * The reference count will *not* be incremented. This is to make adding
- * fields to objects in code more compact. If you want to retain a reference
- * to an added object you must wrap the passed object with json_object_get
- *
- * The reference count of a replaced object will be decremented.
- *
- * The array size will be automatically be expanded to the size of the
- * index if the index is larger than the current size.
- *
- * @param obj the json_object instance
- * @param idx the index to insert the element at
- * @param val the json_object to be added
- */
-extern int json_object_array_put_idx(struct json_object *obj, int idx,
- struct json_object *val);
-
-/** Get the element at specificed index of the array (a json_object of type json_type_array)
- * @param obj the json_object instance
- * @param idx the index to get the element at
- * @returns the json_object at the specified index (or NULL)
- */
-extern struct json_object* json_object_array_get_idx(struct json_object *obj,
- int idx);
-
-/* json_bool type methods */
-
-/** Create a new empty json_object of type json_type_boolean
- * @param b a json_bool TRUE or FALSE (0 or 1)
- * @returns a json_object of type json_type_boolean
- */
-extern struct json_object* json_object_new_boolean(json_bool b);
-
-/** Get the json_bool value of a json_object
- *
- * The type is coerced to a json_bool if the passed object is not a json_bool.
- * integer and double objects will return FALSE if there value is zero
- * or TRUE otherwise. If the passed object is a string it will return
- * TRUE if it has a non zero length. If any other object type is passed
- * TRUE will be returned if the object is not NULL.
- *
- * @param obj the json_object instance
- * @returns a json_bool
- */
-extern json_bool json_object_get_boolean(struct json_object *obj);
-
-
-/* int type methods */
-
-/** Create a new empty json_object of type json_type_int
- * Note that values are stored as 64-bit values internally.
- * To ensure the full range is maintained, use json_object_new_int64 instead.
- * @param i the integer
- * @returns a json_object of type json_type_int
- */
-extern struct json_object* json_object_new_int(int32_t i);
-
-
-/** Create a new empty json_object of type json_type_int
- * @param i the integer
- * @returns a json_object of type json_type_int
- */
-extern struct json_object* json_object_new_int64(int64_t i);
-
-
-/** Get the int value of a json_object
- *
- * The type is coerced to a int if the passed object is not a int.
- * double objects will return their integer conversion. Strings will be
- * parsed as an integer. If no conversion exists then 0 is returned
- * and errno is set to EINVAL. null is equivalent to 0 (no error values set)
- *
- * Note that integers are stored internally as 64-bit values.
- * If the value of too big or too small to fit into 32-bit, INT32_MAX or
- * INT32_MIN are returned, respectively.
- *
- * @param obj the json_object instance
- * @returns an int
- */
-extern int32_t json_object_get_int(struct json_object *obj);
-
-/** Get the int value of a json_object
- *
- * The type is coerced to a int64 if the passed object is not a int64.
- * double objects will return their int64 conversion. Strings will be
- * parsed as an int64. If no conversion exists then 0 is returned.
- *
- * NOTE: Set errno to 0 directly before a call to this function to determine
- * whether or not conversion was successful (it does not clear the value for
- * you).
- *
- * @param obj the json_object instance
- * @returns an int64
- */
-extern int64_t json_object_get_int64(struct json_object *obj);
-
-
-/* double type methods */
-
-/** Create a new empty json_object of type json_type_double
- * @param d the double
- * @returns a json_object of type json_type_double
- */
-extern struct json_object* json_object_new_double(double d);
-
-/**
- * Create a new json_object of type json_type_double, using
- * the exact serialized representation of the value.
- *
- * This allows for numbers that would otherwise get displayed
- * inefficiently (e.g. 12.3 => "12.300000000000001") to be
- * serialized with the more convenient form.
- *
- * Note: this is used by json_tokener_parse_ex() to allow for
- * an exact re-serialization of a parsed object.
- *
- * An equivalent sequence of calls is:
- * @code
- * jso = json_object_new_double(d);
- * json_object_set_serializer(d, json_object_userdata_to_json_string,
- * strdup(ds), json_object_free_userdata)
- * @endcode
- *
- * @param d the numeric value of the double.
- * @param ds the string representation of the double. This will be copied.
- */
-extern struct json_object* json_object_new_double_s(double d, const char *ds);
-
-/** Get the double floating point value of a json_object
- *
- * The type is coerced to a double if the passed object is not a double.
- * integer objects will return their double conversion. Strings will be
- * parsed as a double. If no conversion exists then 0.0 is returned and
- * errno is set to EINVAL. null is equivalent to 0 (no error values set)
- *
- * If the value is too big to fit in a double, then the value is set to
- * the closest infinity with errno set to ERANGE. If strings cannot be
- * converted to their double value, then EINVAL is set & NaN is returned.
- *
- * Arrays of length 0 are interpreted as 0 (with no error flags set).
- * Arrays of length 1 are effectively cast to the equivalent object and
- * converted using the above rules. All other arrays set the error to
- * EINVAL & return NaN.
- *
- * NOTE: Set errno to 0 directly before a call to this function to
- * determine whether or not conversion was successful (it does not clear
- * the value for you).
- *
- * @param obj the json_object instance
- * @returns a double floating point number
- */
-extern double json_object_get_double(struct json_object *obj);
-
-
-/* string type methods */
-
-/** Create a new empty json_object of type json_type_string
- *
- * A copy of the string is made and the memory is managed by the json_object
- *
- * @param s the string
- * @returns a json_object of type json_type_string
- */
-extern struct json_object* json_object_new_string(const char *s);
-
-extern struct json_object* json_object_new_string_len(const char *s, int len);
-
-/** Get the string value of a json_object
- *
- * If the passed object is not of type json_type_string then the JSON
- * representation of the object is returned.
- *
- * The returned string memory is managed by the json_object and will
- * be freed when the reference count of the json_object drops to zero.
- *
- * @param obj the json_object instance
- * @returns a string
- */
-extern const char* json_object_get_string(struct json_object *obj);
-
-/** Get the string length of a json_object
- *
- * If the passed object is not of type json_type_string then zero
- * will be returned.
- *
- * @param obj the json_object instance
- * @returns int
- */
-extern int json_object_get_string_len(struct json_object *obj);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/json-c/json_object_iterator.c b/json-c/json_object_iterator.c
deleted file mode 100644
index 7066649c..00000000
--- a/json-c/json_object_iterator.c
+++ /dev/null
@@ -1,168 +0,0 @@
-/**
-*******************************************************************************
-* @file json_object_iterator.c
-*
-* Copyright (c) 2009-2012 Hewlett-Packard Development Company, L.P.
-*
-* This library is free software; you can redistribute it and/or modify
-* it under the terms of the MIT license. See COPYING for details.
-*
-* @brief json-c forces clients to use its private data
-* structures for JSON Object iteration. This API
-* implementation corrects that by abstracting the
-* private json-c details.
-*
-*******************************************************************************
-*/
-
-#include <stddef.h>
-
-#include "json.h"
-#include "json_object_private.h"
-
-#include "json_object_iterator.h"
-
-/**
- * How It Works
- *
- * For each JSON Object, json-c maintains a linked list of zero
- * or more lh_entry (link-hash entry) structures inside the
- * Object's link-hash table (lh_table).
- *
- * Each lh_entry structure on the JSON Object's linked list
- * represents a single name/value pair. The "next" field of the
- * last lh_entry in the list is set to NULL, which terminates
- * the list.
- *
- * We represent a valid iterator that refers to an actual
- * name/value pair via a pointer to the pair's lh_entry
- * structure set as the iterator's opaque_ field.
- *
- * We follow json-c's current pair list representation by
- * representing a valid "end" iterator (one that refers past the
- * last pair) with a NULL value in the iterator's opaque_ field.
- *
- * A JSON Object without any pairs in it will have the "head"
- * field of its lh_table structure set to NULL. For such an
- * object, json_object_iter_begin will return an iterator with
- * the opaque_ field set to NULL, which is equivalent to the
- * "end" iterator.
- *
- * When iterating, we simply update the iterator's opaque_ field
- * to point to the next lh_entry structure in the linked list.
- * opaque_ will become NULL once we iterate past the last pair
- * in the list, which makes the iterator equivalent to the "end"
- * iterator.
- */
-
-/// Our current representation of the "end" iterator;
-///
-/// @note May not always be NULL
-static const void* kObjectEndIterValue = NULL;
-
-/**
- * ****************************************************************************
- */
-struct json_object_iterator
-json_object_iter_begin(struct json_object* obj)
-{
- struct json_object_iterator iter;
- struct lh_table* pTable;
-
- /// @note json_object_get_object will return NULL if passed NULL
- /// or a non-json_type_object instance
- pTable = json_object_get_object(obj);
- JASSERT(NULL != pTable);
-
- /// @note For a pair-less Object, head is NULL, which matches our
- /// definition of the "end" iterator
- iter.opaque_ = pTable->head;
- return iter;
-}
-
-/**
- * ****************************************************************************
- */
-struct json_object_iterator
-json_object_iter_end(const struct json_object* obj)
-{
- struct json_object_iterator iter;
-
- JASSERT(NULL != obj);
- JASSERT(json_object_is_type(obj, json_type_object));
-
- iter.opaque_ = kObjectEndIterValue;
-
- return iter;
-}
-
-/**
- * ****************************************************************************
- */
-void
-json_object_iter_next(struct json_object_iterator* iter)
-{
- JASSERT(NULL != iter);
- JASSERT(kObjectEndIterValue != iter->opaque_);
-
- iter->opaque_ = ((struct lh_entry *)iter->opaque_)->next;
-}
-
-
-/**
- * ****************************************************************************
- */
-const char*
-json_object_iter_peek_name(const struct json_object_iterator* iter)
-{
- JASSERT(NULL != iter);
- JASSERT(kObjectEndIterValue != iter->opaque_);
-
- return (const char*)(((struct lh_entry *)iter->opaque_)->k);
-}
-
-
-/**
- * ****************************************************************************
- */
-struct json_object*
-json_object_iter_peek_value(const struct json_object_iterator* iter)
-{
- JASSERT(NULL != iter);
- JASSERT(kObjectEndIterValue != iter->opaque_);
-
- return (struct json_object*)(((struct lh_entry *)iter->opaque_)->v);
-}
-
-
-/**
- * ****************************************************************************
- */
-json_bool
-json_object_iter_equal(const struct json_object_iterator* iter1,
- const struct json_object_iterator* iter2)
-{
- JASSERT(NULL != iter1);
- JASSERT(NULL != iter2);
-
- return (iter1->opaque_ == iter2->opaque_);
-}
-
-
-/**
- * ****************************************************************************
- */
-struct json_object_iterator
-json_object_iter_init_default(void)
-{
- struct json_object_iterator iter;
-
- /**
- * @note Make this a negative, invalid value, such that
- * accidental access to it would likely be trapped by the
- * hardware as an invalid address.
- */
- iter.opaque_ = NULL;
-
- return iter;
-}
diff --git a/json-c/json_object_iterator.h b/json-c/json_object_iterator.h
deleted file mode 100644
index 44c9fb25..00000000
--- a/json-c/json_object_iterator.h
+++ /dev/null
@@ -1,239 +0,0 @@
-/**
-*******************************************************************************
-* @file json_object_iterator.h
-*
-* Copyright (c) 2009-2012 Hewlett-Packard Development Company, L.P.
-*
-* This library is free software; you can redistribute it and/or modify
-* it under the terms of the MIT license. See COPYING for details.
-*
-* @brief json-c forces clients to use its private data
-* structures for JSON Object iteration. This API
-* corrects that by abstracting the private json-c
-* details.
-*
-* API attributes: <br>
-* * Thread-safe: NO<br>
-* * Reentrant: NO
-*
-*******************************************************************************
-*/
-
-
-#ifndef JSON_OBJECT_ITERATOR_H
-#define JSON_OBJECT_ITERATOR_H
-
-#include <stddef.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * Forward declaration for the opaque iterator information.
- */
-struct json_object_iter_info_;
-
-/**
- * The opaque iterator that references a name/value pair within
- * a JSON Object instance or the "end" iterator value.
- */
-struct json_object_iterator {
- const void* opaque_;
-};
-
-
-/**
- * forward declaration of json-c's JSON value instance structure
- */
-struct json_object;
-
-
-/**
- * Initializes an iterator structure to a "default" value that
- * is convenient for initializing an iterator variable to a
- * default state (e.g., initialization list in a class'
- * constructor).
- *
- * @code
- * struct json_object_iterator iter = json_object_iter_init_default();
- * MyClass() : iter_(json_object_iter_init_default())
- * @endcode
- *
- * @note The initialized value doesn't reference any specific
- * pair, is considered an invalid iterator, and MUST NOT
- * be passed to any json-c API that expects a valid
- * iterator.
- *
- * @note User and internal code MUST NOT make any assumptions
- * about and dependencies on the value of the "default"
- * iterator value.
- *
- * @return json_object_iterator
- */
-struct json_object_iterator
-json_object_iter_init_default(void);
-
-/** Retrieves an iterator to the first pair of the JSON Object.
- *
- * @warning Any modification of the underlying pair invalidates all
- * iterators to that pair.
- *
- * @param obj JSON Object instance (MUST be of type json_object)
- *
- * @return json_object_iterator If the JSON Object has at
- * least one pair, on return, the iterator refers
- * to the first pair. If the JSON Object doesn't
- * have any pairs, the returned iterator is
- * equivalent to the "end" iterator for the same
- * JSON Object instance.
- *
- * @code
- * struct json_object_iterator it;
- * struct json_object_iterator itEnd;
- * struct json_object* obj;
- *
- * obj = json_tokener_parse("{'first':'george', 'age':100}");
- * it = json_object_iter_begin(obj);
- * itEnd = json_object_iter_end(obj);
- *
- * while (!json_object_iter_equal(&it, &itEnd)) {
- * printf("%s\n",
- * json_object_iter_peek_name(&it));
- * json_object_iter_next(&it);
- * }
- *
- * @endcode
- */
-struct json_object_iterator
-json_object_iter_begin(struct json_object* obj);
-
-/** Retrieves the iterator that represents the position beyond the
- * last pair of the given JSON Object instance.
- *
- * @warning Do NOT write code that assumes that the "end"
- * iterator value is NULL, even if it is so in a
- * particular instance of the implementation.
- *
- * @note The reason we do not (and MUST NOT) provide
- * "json_object_iter_is_end(json_object_iterator* iter)"
- * type of API is because it would limit the underlying
- * representation of name/value containment (or force us
- * to add additional, otherwise unnecessary, fields to
- * the iterator structure). The "end" iterator and the
- * equality test method, on the other hand, permit us to
- * cleanly abstract pretty much any reasonable underlying
- * representation without burdening the iterator
- * structure with unnecessary data.
- *
- * @note For performance reasons, memorize the "end" iterator prior
- * to any loop.
- *
- * @param obj JSON Object instance (MUST be of type json_object)
- *
- * @return json_object_iterator On return, the iterator refers
- * to the "end" of the Object instance's pairs
- * (i.e., NOT the last pair, but "beyond the last
- * pair" value)
- */
-struct json_object_iterator
-json_object_iter_end(const struct json_object* obj);
-
-/** Returns an iterator to the next pair, if any
- *
- * @warning Any modification of the underlying pair
- * invalidates all iterators to that pair.
- *
- * @param iter [IN/OUT] Pointer to iterator that references a
- * name/value pair; MUST be a valid, non-end iterator.
- * WARNING: bad things will happen if invalid or "end"
- * iterator is passed. Upon return will contain the
- * reference to the next pair if there is one; if there
- * are no more pairs, will contain the "end" iterator
- * value, which may be compared against the return value
- * of json_object_iter_end() for the same JSON Object
- * instance.
- */
-void
-json_object_iter_next(struct json_object_iterator* iter);
-
-
-/** Returns a const pointer to the name of the pair referenced
- * by the given iterator.
- *
- * @param iter pointer to iterator that references a name/value
- * pair; MUST be a valid, non-end iterator.
- *
- * @warning bad things will happen if an invalid or
- * "end" iterator is passed.
- *
- * @return const char* Pointer to the name of the referenced
- * name/value pair. The name memory belongs to the
- * name/value pair, will be freed when the pair is
- * deleted or modified, and MUST NOT be modified or
- * freed by the user.
- */
-const char*
-json_object_iter_peek_name(const struct json_object_iterator* iter);
-
-
-/** Returns a pointer to the json-c instance representing the
- * value of the referenced name/value pair, without altering
- * the instance's reference count.
- *
- * @param iter pointer to iterator that references a name/value
- * pair; MUST be a valid, non-end iterator.
- *
- * @warning bad things will happen if invalid or
- * "end" iterator is passed.
- *
- * @return struct json_object* Pointer to the json-c value
- * instance of the referenced name/value pair; the
- * value's reference count is not changed by this
- * function: if you plan to hold on to this json-c node,
- * take a look at json_object_get() and
- * json_object_put(). IMPORTANT: json-c API represents
- * the JSON Null value as a NULL json_object instance
- * pointer.
- */
-struct json_object*
-json_object_iter_peek_value(const struct json_object_iterator* iter);
-
-
-/** Tests two iterators for equality. Typically used to test
- * for end of iteration by comparing an iterator to the
- * corresponding "end" iterator (that was derived from the same
- * JSON Object instance).
- *
- * @note The reason we do not (and MUST NOT) provide
- * "json_object_iter_is_end(json_object_iterator* iter)"
- * type of API is because it would limit the underlying
- * representation of name/value containment (or force us
- * to add additional, otherwise unnecessary, fields to
- * the iterator structure). The equality test method, on
- * the other hand, permits us to cleanly abstract pretty
- * much any reasonable underlying representation.
- *
- * @param iter1 Pointer to first valid, non-NULL iterator
- * @param iter2 POinter to second valid, non-NULL iterator
- *
- * @warning if a NULL iterator pointer or an uninitialized
- * or invalid iterator, or iterators derived from
- * different JSON Object instances are passed, bad things
- * will happen!
- *
- * @return json_bool non-zero if iterators are equal (i.e., both
- * reference the same name/value pair or are both at
- * "end"); zero if they are not equal.
- */
-json_bool
-json_object_iter_equal(const struct json_object_iterator* iter1,
- const struct json_object_iterator* iter2);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-
-#endif /* JSON_OBJECT_ITERATOR_H */
diff --git a/json-c/json_object_private.h b/json-c/json_object_private.h
deleted file mode 100644
index 5ed791b5..00000000
--- a/json-c/json_object_private.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * $Id: json_object_private.h,v 1.4 2006/01/26 02:16:28 mclark Exp $
- *
- * Copyright (c) 2004, 2005 Metaparadigm Pte. Ltd.
- * Michael Clark <michael@metaparadigm.com>
- *
- * This library is free software; you can redistribute it and/or modify
- * it under the terms of the MIT license. See COPYING for details.
- *
- */
-
-#ifndef _json_object_private_h_
-#define _json_object_private_h_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef void (json_object_private_delete_fn)(struct json_object *o);
-
-struct json_object
-{
- enum json_type o_type;
- json_object_private_delete_fn *_delete;
- json_object_to_json_string_fn *_to_json_string;
- int _ref_count;
- struct printbuf *_pb;
- union data {
- json_bool c_boolean;
- double c_double;
- int64_t c_int64;
- struct lh_table *c_object;
- struct array_list *c_array;
- struct {
- char *str;
- int len;
- } c_string;
- } o;
- json_object_delete_fn *_user_delete;
- void *_userdata;
-};
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/json-c/json_tokener.c b/json-c/json_tokener.c
deleted file mode 100644
index 60e81f27..00000000
--- a/json-c/json_tokener.c
+++ /dev/null
@@ -1,887 +0,0 @@
-/*
- * $Id: json_tokener.c,v 1.20 2006/07/25 03:24:50 mclark Exp $
- *
- * Copyright (c) 2004, 2005 Metaparadigm Pte. Ltd.
- * Michael Clark <michael@metaparadigm.com>
- *
- * This library is free software; you can redistribute it and/or modify
- * it under the terms of the MIT license. See COPYING for details.
- *
- *
- * Copyright (c) 2008-2009 Yahoo! Inc. All rights reserved.
- * The copyrights to the contents of this file are licensed under the MIT License
- * (http://www.opensource.org/licenses/mit-license.php)
- */
-
-#include "config.h"
-
-#include <math.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <stddef.h>
-#include <ctype.h>
-#include <string.h>
-#include <limits.h>
-
-#include "debug.h"
-#include "printbuf.h"
-#include "arraylist.h"
-#include "json_inttypes.h"
-#include "json_object.h"
-#include "json_tokener.h"
-#include "json_util.h"
-
-#ifdef HAVE_LOCALE_H
-#include <locale.h>
-#endif /* HAVE_LOCALE_H */
-
-#define jt_hexdigit(x) (((x) <= '9') ? (x) - '0' : ((x) & 7) + 9)
-
-#if !HAVE_STRDUP && defined(_MSC_VER)
- /* MSC has the version as _strdup */
-# define strdup _strdup
-#elif !HAVE_STRDUP
-# error You do not have strdup on your system.
-#endif /* HAVE_STRDUP */
-
-#if !HAVE_STRNCASECMP && defined(_MSC_VER)
- /* MSC has the version as _strnicmp */
-# define strncasecmp _strnicmp
-#elif !HAVE_STRNCASECMP
-# error You do not have strncasecmp on your system.
-#endif /* HAVE_STRNCASECMP */
-
-/* Use C99 NAN by default; if not available, nan("") should work too. */
-#ifndef NAN
-#define NAN nan("")
-#endif /* !NAN */
-
-static const char json_null_str[] = "null";
-static const int json_null_str_len = sizeof(json_null_str) - 1;
-static const char json_inf_str[] = "Infinity";
-static const int json_inf_str_len = sizeof(json_inf_str) - 1;
-static const char json_nan_str[] = "NaN";
-static const int json_nan_str_len = sizeof(json_nan_str) - 1;
-static const char json_true_str[] = "true";
-static const int json_true_str_len = sizeof(json_true_str) - 1;
-static const char json_false_str[] = "false";
-static const int json_false_str_len = sizeof(json_false_str) - 1;
-
-static const char* json_tokener_errors[] = {
- "success",
- "continue",
- "nesting too deep",
- "unexpected end of data",
- "unexpected character",
- "null expected",
- "boolean expected",
- "number expected",
- "array value separator ',' expected",
- "quoted object property name expected",
- "object property name separator ':' expected",
- "object value separator ',' expected",
- "invalid string sequence",
- "expected comment",
- "buffer size overflow"
-};
-
-const char *json_tokener_error_desc(enum json_tokener_error jerr)
-{
- int jerr_int = (int)jerr;
- if (jerr_int < 0 || jerr_int >= (int)(sizeof(json_tokener_errors) / sizeof(json_tokener_errors[0])))
- return "Unknown error, invalid json_tokener_error value passed to json_tokener_error_desc()";
- return json_tokener_errors[jerr];
-}
-
-enum json_tokener_error json_tokener_get_error(json_tokener *tok)
-{
- return tok->err;
-}
-
-/* Stuff for decoding unicode sequences */
-#define IS_HIGH_SURROGATE(uc) (((uc) & 0xFC00) == 0xD800)
-#define IS_LOW_SURROGATE(uc) (((uc) & 0xFC00) == 0xDC00)
-#define DECODE_SURROGATE_PAIR(hi,lo) ((((hi) & 0x3FF) << 10) + ((lo) & 0x3FF) + 0x10000)
-static unsigned char utf8_replacement_char[3] = { 0xEF, 0xBF, 0xBD };
-
-struct json_tokener* json_tokener_new_ex(int depth)
-{
- struct json_tokener *tok;
-
- tok = (struct json_tokener*)calloc(1, sizeof(struct json_tokener));
- if (!tok) return NULL;
- tok->stack = (struct json_tokener_srec *)calloc(depth, sizeof(struct json_tokener_srec));
- if (!tok->stack) {
- free(tok);
- return NULL;
- }
- tok->pb = printbuf_new();
- tok->max_depth = depth;
- json_tokener_reset(tok);
- return tok;
-}
-
-struct json_tokener* json_tokener_new(void)
-{
- return json_tokener_new_ex(JSON_TOKENER_DEFAULT_DEPTH);
-}
-
-void json_tokener_free(struct json_tokener *tok)
-{
- json_tokener_reset(tok);
- if (tok->pb) printbuf_free(tok->pb);
- if (tok->stack) free(tok->stack);
- free(tok);
-}
-
-static void json_tokener_reset_level(struct json_tokener *tok, int depth)
-{
- tok->stack[depth].state = json_tokener_state_eatws;
- tok->stack[depth].saved_state = json_tokener_state_start;
- json_object_put(tok->stack[depth].current);
- tok->stack[depth].current = NULL;
- free(tok->stack[depth].obj_field_name);
- tok->stack[depth].obj_field_name = NULL;
-}
-
-void json_tokener_reset(struct json_tokener *tok)
-{
- int i;
- if (!tok)
- return;
-
- for(i = tok->depth; i >= 0; i--)
- json_tokener_reset_level(tok, i);
- tok->depth = 0;
- tok->err = json_tokener_success;
-}
-
-struct json_object* json_tokener_parse(const char *str)
-{
- enum json_tokener_error jerr_ignored;
- struct json_object* obj;
- obj = json_tokener_parse_verbose(str, &jerr_ignored);
- return obj;
-}
-
-struct json_object* json_tokener_parse_verbose(const char *str, enum json_tokener_error *error)
-{
- struct json_tokener* tok;
- struct json_object* obj;
-
- tok = json_tokener_new();
- if (!tok)
- return NULL;
- obj = json_tokener_parse_ex(tok, str, -1);
- *error = tok->err;
- if(tok->err != json_tokener_success) {
- if (obj != NULL)
- json_object_put(obj);
- obj = NULL;
- }
-
- json_tokener_free(tok);
- return obj;
-}
-
-#define state tok->stack[tok->depth].state
-#define saved_state tok->stack[tok->depth].saved_state
-#define current tok->stack[tok->depth].current
-#define obj_field_name tok->stack[tok->depth].obj_field_name
-
-/* Optimization:
- * json_tokener_parse_ex() consumed a lot of CPU in its main loop,
- * iterating character-by character. A large performance boost is
- * achieved by using tighter loops to locally handle units such as
- * comments and strings. Loops that handle an entire token within
- * their scope also gather entire strings and pass them to
- * printbuf_memappend() in a single call, rather than calling
- * printbuf_memappend() one char at a time.
- *
- * PEEK_CHAR() and ADVANCE_CHAR() macros are used for code that is
- * common to both the main loop and the tighter loops.
- */
-
-/* PEEK_CHAR(dest, tok) macro:
- * Peeks at the current char and stores it in dest.
- * Returns 1 on success, sets tok->err and returns 0 if no more chars.
- * Implicit inputs: str, len vars
- */
-#define PEEK_CHAR(dest, tok) \
- (((tok)->char_offset == len) ? \
- (((tok)->depth == 0 && state == json_tokener_state_eatws && saved_state == json_tokener_state_finish) ? \
- (((tok)->err = json_tokener_success), 0) \
- : \
- (((tok)->err = json_tokener_continue), 0) \
- ) : \
- (((dest) = *str), 1) \
- )
-
-/* ADVANCE_CHAR() macro:
- * Incrementes str & tok->char_offset.
- * For convenience of existing conditionals, returns the old value of c (0 on eof)
- * Implicit inputs: c var
- */
-#define ADVANCE_CHAR(str, tok) \
- ( ++(str), ((tok)->char_offset)++, c)
-
-
-/* End optimization macro defs */
-
-
-struct json_object* json_tokener_parse_ex(struct json_tokener *tok,
- const char *str, int len)
-{
- struct json_object *obj = NULL;
- char c = '\1';
-#ifdef HAVE_SETLOCALE
- char *oldlocale=NULL, *tmplocale;
-
- tmplocale = setlocale(LC_NUMERIC, NULL);
- if (tmplocale) oldlocale = strdup(tmplocale);
- setlocale(LC_NUMERIC, "C");
-#endif
-
- tok->char_offset = 0;
- tok->err = json_tokener_success;
-
- /* this interface is presently not 64-bit clean due to the int len argument
- and the internal printbuf interface that takes 32-bit int len arguments
- so the function limits the maximum string size to INT32_MAX (2GB).
- If the function is called with len == -1 then strlen is called to check
- the string length is less than INT32_MAX (2GB) */
- if ((len < -1) || (len == -1 && strlen(str) > INT32_MAX)) {
- tok->err = json_tokener_error_size;
- return NULL;
- }
-
- while (PEEK_CHAR(c, tok)) {
-
- redo_char:
- switch(state) {
-
- case json_tokener_state_eatws:
- /* Advance until we change state */
- while (isspace((int)c)) {
- if ((!ADVANCE_CHAR(str, tok)) || (!PEEK_CHAR(c, tok)))
- goto out;
- }
- if(c == '/' && !(tok->flags & JSON_TOKENER_STRICT)) {
- printbuf_reset(tok->pb);
- printbuf_memappend_fast(tok->pb, &c, 1);
- state = json_tokener_state_comment_start;
- } else {
- state = saved_state;
- goto redo_char;
- }
- break;
-
- case json_tokener_state_start:
- switch(c) {
- case '{':
- state = json_tokener_state_eatws;
- saved_state = json_tokener_state_object_field_start;
- current = json_object_new_object();
- break;
- case '[':
- state = json_tokener_state_eatws;
- saved_state = json_tokener_state_array;
- current = json_object_new_array();
- break;
- case 'I':
- case 'i':
- state = json_tokener_state_inf;
- printbuf_reset(tok->pb);
- tok->st_pos = 0;
- goto redo_char;
- case 'N':
- case 'n':
- state = json_tokener_state_null; // or NaN
- printbuf_reset(tok->pb);
- tok->st_pos = 0;
- goto redo_char;
- case '\'':
- if (tok->flags & JSON_TOKENER_STRICT) {
- /* in STRICT mode only double-quote are allowed */
- tok->err = json_tokener_error_parse_unexpected;
- goto out;
- }
- case '"':
- state = json_tokener_state_string;
- printbuf_reset(tok->pb);
- tok->quote_char = c;
- break;
- case 'T':
- case 't':
- case 'F':
- case 'f':
- state = json_tokener_state_boolean;
- printbuf_reset(tok->pb);
- tok->st_pos = 0;
- goto redo_char;
-#if defined(__GNUC__)
- case '0' ... '9':
-#else
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9':
-#endif
- case '-':
- state = json_tokener_state_number;
- printbuf_reset(tok->pb);
- tok->is_double = 0;
- goto redo_char;
- default:
- tok->err = json_tokener_error_parse_unexpected;
- goto out;
- }
- break;
-
- case json_tokener_state_finish:
- if(tok->depth == 0) goto out;
- obj = json_object_get(current);
- json_tokener_reset_level(tok, tok->depth);
- tok->depth--;
- goto redo_char;
-
- case json_tokener_state_inf: /* aka starts with 'i' */
- {
- int size_inf;
- int is_negative = 0;
-
- printbuf_memappend_fast(tok->pb, &c, 1);
- size_inf = json_min(tok->st_pos+1, json_inf_str_len);
- char *infbuf = tok->pb->buf;
- if (*infbuf == '-')
- {
- infbuf++;
- is_negative = 1;
- }
- if ((!(tok->flags & JSON_TOKENER_STRICT) &&
- strncasecmp(json_inf_str, infbuf, size_inf) == 0) ||
- (strncmp(json_inf_str, infbuf, size_inf) == 0)
- )
- {
- if (tok->st_pos == json_inf_str_len)
- {
- current = json_object_new_double(is_negative ? -INFINITY : INFINITY);
- saved_state = json_tokener_state_finish;
- state = json_tokener_state_eatws;
- goto redo_char;
- }
- } else {
- tok->err = json_tokener_error_parse_unexpected;
- goto out;
- }
- tok->st_pos++;
- }
- break;
- case json_tokener_state_null: /* aka starts with 'n' */
- {
- int size;
- int size_nan;
- printbuf_memappend_fast(tok->pb, &c, 1);
- size = json_min(tok->st_pos+1, json_null_str_len);
- size_nan = json_min(tok->st_pos+1, json_nan_str_len);
- if((!(tok->flags & JSON_TOKENER_STRICT) &&
- strncasecmp(json_null_str, tok->pb->buf, size) == 0)
- || (strncmp(json_null_str, tok->pb->buf, size) == 0)
- ) {
- if (tok->st_pos == json_null_str_len) {
- current = NULL;
- saved_state = json_tokener_state_finish;
- state = json_tokener_state_eatws;
- goto redo_char;
- }
- }
- else if ((!(tok->flags & JSON_TOKENER_STRICT) &&
- strncasecmp(json_nan_str, tok->pb->buf, size_nan) == 0) ||
- (strncmp(json_nan_str, tok->pb->buf, size_nan) == 0)
- )
- {
- if (tok->st_pos == json_nan_str_len)
- {
- current = json_object_new_double(NAN);
- saved_state = json_tokener_state_finish;
- state = json_tokener_state_eatws;
- goto redo_char;
- }
- } else {
- tok->err = json_tokener_error_parse_null;
- goto out;
- }
- tok->st_pos++;
- }
- break;
-
- case json_tokener_state_comment_start:
- if(c == '*') {
- state = json_tokener_state_comment;
- } else if(c == '/') {
- state = json_tokener_state_comment_eol;
- } else {
- tok->err = json_tokener_error_parse_comment;
- goto out;
- }
- printbuf_memappend_fast(tok->pb, &c, 1);
- break;
-
- case json_tokener_state_comment:
- {
- /* Advance until we change state */
- const char *case_start = str;
- while(c != '*') {
- if (!ADVANCE_CHAR(str, tok) || !PEEK_CHAR(c, tok)) {
- printbuf_memappend_fast(tok->pb, case_start, str-case_start);
- goto out;
- }
- }
- printbuf_memappend_fast(tok->pb, case_start, 1+str-case_start);
- state = json_tokener_state_comment_end;
- }
- break;
-
- case json_tokener_state_comment_eol:
- {
- /* Advance until we change state */
- const char *case_start = str;
- while(c != '\n') {
- if (!ADVANCE_CHAR(str, tok) || !PEEK_CHAR(c, tok)) {
- printbuf_memappend_fast(tok->pb, case_start, str-case_start);
- goto out;
- }
- }
- printbuf_memappend_fast(tok->pb, case_start, str-case_start);
- MC_DEBUG("json_tokener_comment: %s\n", tok->pb->buf);
- state = json_tokener_state_eatws;
- }
- break;
-
- case json_tokener_state_comment_end:
- printbuf_memappend_fast(tok->pb, &c, 1);
- if(c == '/') {
- MC_DEBUG("json_tokener_comment: %s\n", tok->pb->buf);
- state = json_tokener_state_eatws;
- } else {
- state = json_tokener_state_comment;
- }
- break;
-
- case json_tokener_state_string:
- {
- /* Advance until we change state */
- const char *case_start = str;
- while(1) {
- if(c == tok->quote_char) {
- printbuf_memappend_fast(tok->pb, case_start, str-case_start);
- current = json_object_new_string_len(tok->pb->buf, tok->pb->bpos);
- saved_state = json_tokener_state_finish;
- state = json_tokener_state_eatws;
- break;
- } else if(c == '\\') {
- printbuf_memappend_fast(tok->pb, case_start, str-case_start);
- saved_state = json_tokener_state_string;
- state = json_tokener_state_string_escape;
- break;
- }
- if (!ADVANCE_CHAR(str, tok) || !PEEK_CHAR(c, tok)) {
- printbuf_memappend_fast(tok->pb, case_start, str-case_start);
- goto out;
- }
- }
- }
- break;
-
- case json_tokener_state_string_escape:
- switch(c) {
- case '"':
- case '\\':
- case '/':
- printbuf_memappend_fast(tok->pb, &c, 1);
- state = saved_state;
- break;
- case 'b':
- case 'n':
- case 'r':
- case 't':
- case 'f':
- if(c == 'b') printbuf_memappend_fast(tok->pb, "\b", 1);
- else if(c == 'n') printbuf_memappend_fast(tok->pb, "\n", 1);
- else if(c == 'r') printbuf_memappend_fast(tok->pb, "\r", 1);
- else if(c == 't') printbuf_memappend_fast(tok->pb, "\t", 1);
- else if(c == 'f') printbuf_memappend_fast(tok->pb, "\f", 1);
- state = saved_state;
- break;
- case 'u':
- tok->ucs_char = 0;
- tok->st_pos = 0;
- state = json_tokener_state_escape_unicode;
- break;
- default:
- tok->err = json_tokener_error_parse_string;
- goto out;
- }
- break;
-
- case json_tokener_state_escape_unicode:
- {
- unsigned int got_hi_surrogate = 0;
-
- /* Handle a 4-byte sequence, or two sequences if a surrogate pair */
- while(1) {
- if(strchr(json_hex_chars, c)) {
- tok->ucs_char += ((unsigned int)jt_hexdigit(c) << ((3-tok->st_pos++)*4));
- if(tok->st_pos == 4) {
- unsigned char unescaped_utf[4];
-
- if (got_hi_surrogate) {
- if (IS_LOW_SURROGATE(tok->ucs_char)) {
- /* Recalculate the ucs_char, then fall thru to process normally */
- tok->ucs_char = DECODE_SURROGATE_PAIR(got_hi_surrogate, tok->ucs_char);
- } else {
- /* Hi surrogate was not followed by a low surrogate */
- /* Replace the hi and process the rest normally */
- printbuf_memappend_fast(tok->pb, (char*)utf8_replacement_char, 3);
- }
- got_hi_surrogate = 0;
- }
-
- if (tok->ucs_char < 0x80) {
- unescaped_utf[0] = tok->ucs_char;
- printbuf_memappend_fast(tok->pb, (char*)unescaped_utf, 1);
- } else if (tok->ucs_char < 0x800) {
- unescaped_utf[0] = 0xc0 | (tok->ucs_char >> 6);
- unescaped_utf[1] = 0x80 | (tok->ucs_char & 0x3f);
- printbuf_memappend_fast(tok->pb, (char*)unescaped_utf, 2);
- } else if (IS_HIGH_SURROGATE(tok->ucs_char)) {
- /* Got a high surrogate. Remember it and look for the
- * the beginning of another sequence, which should be the
- * low surrogate.
- */
- got_hi_surrogate = tok->ucs_char;
- /* Not at end, and the next two chars should be "\u" */
- if ((tok->char_offset+1 != len) &&
- (tok->char_offset+2 != len) &&
- (str[1] == '\\') &&
- (str[2] == 'u'))
- {
- /* Advance through the 16 bit surrogate, and move on to the
- * next sequence. The next step is to process the following
- * characters.
- */
- if( !ADVANCE_CHAR(str, tok) || !ADVANCE_CHAR(str, tok) ) {
- printbuf_memappend_fast(tok->pb, (char*)utf8_replacement_char, 3);
- }
- /* Advance to the first char of the next sequence and
- * continue processing with the next sequence.
- */
- if (!ADVANCE_CHAR(str, tok) || !PEEK_CHAR(c, tok)) {
- printbuf_memappend_fast(tok->pb, (char*)utf8_replacement_char, 3);
- goto out;
- }
- tok->ucs_char = 0;
- tok->st_pos = 0;
- continue; /* other json_tokener_state_escape_unicode */
- } else {
- /* Got a high surrogate without another sequence following
- * it. Put a replacement char in for the hi surrogate
- * and pretend we finished.
- */
- printbuf_memappend_fast(tok->pb, (char*)utf8_replacement_char, 3);
- }
- } else if (IS_LOW_SURROGATE(tok->ucs_char)) {
- /* Got a low surrogate not preceded by a high */
- printbuf_memappend_fast(tok->pb, (char*)utf8_replacement_char, 3);
- } else if (tok->ucs_char < 0x10000) {
- unescaped_utf[0] = 0xe0 | (tok->ucs_char >> 12);
- unescaped_utf[1] = 0x80 | ((tok->ucs_char >> 6) & 0x3f);
- unescaped_utf[2] = 0x80 | (tok->ucs_char & 0x3f);
- printbuf_memappend_fast(tok->pb, (char*)unescaped_utf, 3);
- } else if (tok->ucs_char < 0x110000) {
- unescaped_utf[0] = 0xf0 | ((tok->ucs_char >> 18) & 0x07);
- unescaped_utf[1] = 0x80 | ((tok->ucs_char >> 12) & 0x3f);
- unescaped_utf[2] = 0x80 | ((tok->ucs_char >> 6) & 0x3f);
- unescaped_utf[3] = 0x80 | (tok->ucs_char & 0x3f);
- printbuf_memappend_fast(tok->pb, (char*)unescaped_utf, 4);
- } else {
- /* Don't know what we got--insert the replacement char */
- printbuf_memappend_fast(tok->pb, (char*)utf8_replacement_char, 3);
- }
- state = saved_state;
- break;
- }
- } else {
- tok->err = json_tokener_error_parse_string;
- goto out;
- }
- if (!ADVANCE_CHAR(str, tok) || !PEEK_CHAR(c, tok)) {
- if (got_hi_surrogate) /* Clean up any pending chars */
- printbuf_memappend_fast(tok->pb, (char*)utf8_replacement_char, 3);
- goto out;
- }
- }
- }
- break;
-
- case json_tokener_state_boolean:
- {
- int size1, size2;
- printbuf_memappend_fast(tok->pb, &c, 1);
- size1 = json_min(tok->st_pos+1, json_true_str_len);
- size2 = json_min(tok->st_pos+1, json_false_str_len);
- if((!(tok->flags & JSON_TOKENER_STRICT) &&
- strncasecmp(json_true_str, tok->pb->buf, size1) == 0)
- || (strncmp(json_true_str, tok->pb->buf, size1) == 0)
- ) {
- if(tok->st_pos == json_true_str_len) {
- current = json_object_new_boolean(1);
- saved_state = json_tokener_state_finish;
- state = json_tokener_state_eatws;
- goto redo_char;
- }
- } else if((!(tok->flags & JSON_TOKENER_STRICT) &&
- strncasecmp(json_false_str, tok->pb->buf, size2) == 0)
- || (strncmp(json_false_str, tok->pb->buf, size2) == 0)) {
- if(tok->st_pos == json_false_str_len) {
- current = json_object_new_boolean(0);
- saved_state = json_tokener_state_finish;
- state = json_tokener_state_eatws;
- goto redo_char;
- }
- } else {
- tok->err = json_tokener_error_parse_boolean;
- goto out;
- }
- tok->st_pos++;
- }
- break;
-
- case json_tokener_state_number:
- {
- /* Advance until we change state */
- const char *case_start = str;
- int case_len=0;
- while(c && strchr(json_number_chars, c)) {
- ++case_len;
- if(c == '.' || c == 'e' || c == 'E')
- tok->is_double = 1;
- if (!ADVANCE_CHAR(str, tok) || !PEEK_CHAR(c, tok)) {
- printbuf_memappend_fast(tok->pb, case_start, case_len);
- goto out;
- }
- }
- if (case_len>0)
- printbuf_memappend_fast(tok->pb, case_start, case_len);
-
- // Check for -Infinity
- if (tok->pb->buf[0] == '-' && case_len == 1 &&
- (c == 'i' || c == 'I'))
- {
- state = json_tokener_state_inf;
- goto redo_char;
- }
- }
- {
- int64_t num64;
- double numd;
- if (!tok->is_double && json_parse_int64(tok->pb->buf, &num64) == 0) {
- if (num64 && tok->pb->buf[0]=='0' && (tok->flags & JSON_TOKENER_STRICT)) {
- /* in strict mode, number must not start with 0 */
- tok->err = json_tokener_error_parse_number;
- goto out;
- }
- current = json_object_new_int64(num64);
- }
- else if(tok->is_double && json_parse_double(tok->pb->buf, &numd) == 0)
- {
- current = json_object_new_double_s(numd, tok->pb->buf);
- } else {
- tok->err = json_tokener_error_parse_number;
- goto out;
- }
- saved_state = json_tokener_state_finish;
- state = json_tokener_state_eatws;
- goto redo_char;
- }
- break;
-
- case json_tokener_state_array_after_sep:
- case json_tokener_state_array:
- if(c == ']') {
- if (state == json_tokener_state_array_after_sep &&
- (tok->flags & JSON_TOKENER_STRICT))
- {
- tok->err = json_tokener_error_parse_unexpected;
- goto out;
- }
- saved_state = json_tokener_state_finish;
- state = json_tokener_state_eatws;
- } else {
- if(tok->depth >= tok->max_depth-1) {
- tok->err = json_tokener_error_depth;
- goto out;
- }
- state = json_tokener_state_array_add;
- tok->depth++;
- json_tokener_reset_level(tok, tok->depth);
- goto redo_char;
- }
- break;
-
- case json_tokener_state_array_add:
- json_object_array_add(current, obj);
- saved_state = json_tokener_state_array_sep;
- state = json_tokener_state_eatws;
- goto redo_char;
-
- case json_tokener_state_array_sep:
- if(c == ']') {
- saved_state = json_tokener_state_finish;
- state = json_tokener_state_eatws;
- } else if(c == ',') {
- saved_state = json_tokener_state_array_after_sep;
- state = json_tokener_state_eatws;
- } else {
- tok->err = json_tokener_error_parse_array;
- goto out;
- }
- break;
-
- case json_tokener_state_object_field_start:
- case json_tokener_state_object_field_start_after_sep:
- if(c == '}') {
- if (state == json_tokener_state_object_field_start_after_sep &&
- (tok->flags & JSON_TOKENER_STRICT))
- {
- tok->err = json_tokener_error_parse_unexpected;
- goto out;
- }
- saved_state = json_tokener_state_finish;
- state = json_tokener_state_eatws;
- } else if (c == '"' || c == '\'') {
- tok->quote_char = c;
- printbuf_reset(tok->pb);
- state = json_tokener_state_object_field;
- } else {
- tok->err = json_tokener_error_parse_object_key_name;
- goto out;
- }
- break;
-
- case json_tokener_state_object_field:
- {
- /* Advance until we change state */
- const char *case_start = str;
- while(1) {
- if(c == tok->quote_char) {
- printbuf_memappend_fast(tok->pb, case_start, str-case_start);
- obj_field_name = strdup(tok->pb->buf);
- saved_state = json_tokener_state_object_field_end;
- state = json_tokener_state_eatws;
- break;
- } else if(c == '\\') {
- printbuf_memappend_fast(tok->pb, case_start, str-case_start);
- saved_state = json_tokener_state_object_field;
- state = json_tokener_state_string_escape;
- break;
- }
- if (!ADVANCE_CHAR(str, tok) || !PEEK_CHAR(c, tok)) {
- printbuf_memappend_fast(tok->pb, case_start, str-case_start);
- goto out;
- }
- }
- }
- break;
-
- case json_tokener_state_object_field_end:
- if(c == ':') {
- saved_state = json_tokener_state_object_value;
- state = json_tokener_state_eatws;
- } else {
- tok->err = json_tokener_error_parse_object_key_sep;
- goto out;
- }
- break;
-
- case json_tokener_state_object_value:
- if(tok->depth >= tok->max_depth-1) {
- tok->err = json_tokener_error_depth;
- goto out;
- }
- state = json_tokener_state_object_value_add;
- tok->depth++;
- json_tokener_reset_level(tok, tok->depth);
- goto redo_char;
-
- case json_tokener_state_object_value_add:
- json_object_object_add(current, obj_field_name, obj);
- free(obj_field_name);
- obj_field_name = NULL;
- saved_state = json_tokener_state_object_sep;
- state = json_tokener_state_eatws;
- goto redo_char;
-
- case json_tokener_state_object_sep:
- if(c == '}') {
- saved_state = json_tokener_state_finish;
- state = json_tokener_state_eatws;
- } else if(c == ',') {
- saved_state = json_tokener_state_object_field_start_after_sep;
- state = json_tokener_state_eatws;
- } else {
- tok->err = json_tokener_error_parse_object_value_sep;
- goto out;
- }
- break;
-
- }
- if (!ADVANCE_CHAR(str, tok))
- goto out;
- } /* while(POP_CHAR) */
-
- out:
- if (c &&
- (state == json_tokener_state_finish) &&
- (tok->depth == 0) &&
- (tok->flags & JSON_TOKENER_STRICT)) {
- /* unexpected char after JSON data */
- tok->err = json_tokener_error_parse_unexpected;
- }
- if (!c) { /* We hit an eof char (0) */
- if(state != json_tokener_state_finish &&
- saved_state != json_tokener_state_finish)
- tok->err = json_tokener_error_parse_eof;
- }
-
-#ifdef HAVE_SETLOCALE
- setlocale(LC_NUMERIC, oldlocale);
- if (oldlocale) free(oldlocale);
-#endif
-
- if (tok->err == json_tokener_success)
- {
- json_object *ret = json_object_get(current);
- int ii;
-
- /* Partially reset, so we parse additional objects on subsequent calls. */
- for(ii = tok->depth; ii >= 0; ii--)
- json_tokener_reset_level(tok, ii);
- return ret;
- }
-
- MC_DEBUG("json_tokener_parse_ex: error %s at offset %d\n",
- json_tokener_errors[tok->err], tok->char_offset);
- return NULL;
-}
-
-void json_tokener_set_flags(struct json_tokener *tok, int flags)
-{
- tok->flags = flags;
-}
diff --git a/json-c/json_tokener.h b/json-c/json_tokener.h
deleted file mode 100644
index a72d2bde..00000000
--- a/json-c/json_tokener.h
+++ /dev/null
@@ -1,208 +0,0 @@
-/*
- * $Id: json_tokener.h,v 1.10 2006/07/25 03:24:50 mclark Exp $
- *
- * Copyright (c) 2004, 2005 Metaparadigm Pte. Ltd.
- * Michael Clark <michael@metaparadigm.com>
- *
- * This library is free software; you can redistribute it and/or modify
- * it under the terms of the MIT license. See COPYING for details.
- *
- */
-
-#ifndef _json_tokener_h_
-#define _json_tokener_h_
-
-#include <stddef.h>
-#include "json_object.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-enum json_tokener_error {
- json_tokener_success,
- json_tokener_continue,
- json_tokener_error_depth,
- json_tokener_error_parse_eof,
- json_tokener_error_parse_unexpected,
- json_tokener_error_parse_null,
- json_tokener_error_parse_boolean,
- json_tokener_error_parse_number,
- json_tokener_error_parse_array,
- json_tokener_error_parse_object_key_name,
- json_tokener_error_parse_object_key_sep,
- json_tokener_error_parse_object_value_sep,
- json_tokener_error_parse_string,
- json_tokener_error_parse_comment,
- json_tokener_error_size
-};
-
-enum json_tokener_state {
- json_tokener_state_eatws,
- json_tokener_state_start,
- json_tokener_state_finish,
- json_tokener_state_null,
- json_tokener_state_comment_start,
- json_tokener_state_comment,
- json_tokener_state_comment_eol,
- json_tokener_state_comment_end,
- json_tokener_state_string,
- json_tokener_state_string_escape,
- json_tokener_state_escape_unicode,
- json_tokener_state_boolean,
- json_tokener_state_number,
- json_tokener_state_array,
- json_tokener_state_array_add,
- json_tokener_state_array_sep,
- json_tokener_state_object_field_start,
- json_tokener_state_object_field,
- json_tokener_state_object_field_end,
- json_tokener_state_object_value,
- json_tokener_state_object_value_add,
- json_tokener_state_object_sep,
- json_tokener_state_array_after_sep,
- json_tokener_state_object_field_start_after_sep,
- json_tokener_state_inf
-};
-
-struct json_tokener_srec
-{
- enum json_tokener_state state, saved_state;
- struct json_object *obj;
- struct json_object *current;
- char *obj_field_name;
-};
-
-#define JSON_TOKENER_DEFAULT_DEPTH 32
-
-struct json_tokener
-{
- char *str;
- struct printbuf *pb;
- int max_depth, depth, is_double, st_pos, char_offset;
- enum json_tokener_error err;
- unsigned int ucs_char;
- char quote_char;
- struct json_tokener_srec *stack;
- int flags;
-};
-
-/**
- * Be strict when parsing JSON input. Use caution with
- * this flag as what is considered valid may become more
- * restrictive from one release to the next, causing your
- * code to fail on previously working input.
- *
- * This flag is not set by default.
- *
- * @see json_tokener_set_flags()
- */
-#define JSON_TOKENER_STRICT 0x01
-
-/**
- * Given an error previously returned by json_tokener_get_error(),
- * return a human readable description of the error.
- *
- * @return a generic error message is returned if an invalid error value is provided.
- */
-const char *json_tokener_error_desc(enum json_tokener_error jerr);
-
-/**
- * Retrieve the error caused by the last call to json_tokener_parse_ex(),
- * or json_tokener_success if there is no error.
- *
- * When parsing a JSON string in pieces, if the tokener is in the middle
- * of parsing this will return json_tokener_continue.
- *
- * See also json_tokener_error_desc().
- */
-enum json_tokener_error json_tokener_get_error(struct json_tokener *tok);
-
-extern struct json_tokener* json_tokener_new(void);
-extern struct json_tokener* json_tokener_new_ex(int depth);
-extern void json_tokener_free(struct json_tokener *tok);
-extern void json_tokener_reset(struct json_tokener *tok);
-extern struct json_object* json_tokener_parse(const char *str);
-extern struct json_object* json_tokener_parse_verbose(const char *str, enum json_tokener_error *error);
-
-/**
- * Set flags that control how parsing will be done.
- */
-extern void json_tokener_set_flags(struct json_tokener *tok, int flags);
-
-/**
- * Parse a string and return a non-NULL json_object if a valid JSON value
- * is found. The string does not need to be a JSON object or array;
- * it can also be a string, number or boolean value.
- *
- * A partial JSON string can be parsed. If the parsing is incomplete,
- * NULL will be returned and json_tokener_get_error() will be return
- * json_tokener_continue.
- * json_tokener_parse_ex() can then be called with additional bytes in str
- * to continue the parsing.
- *
- * If json_tokener_parse_ex() returns NULL and the error anything other than
- * json_tokener_continue, a fatal error has occurred and parsing must be
- * halted. Then tok object must not be re-used until json_tokener_reset() is
- * called.
- *
- * When a valid JSON value is parsed, a non-NULL json_object will be
- * returned. Also, json_tokener_get_error() will return json_tokener_success.
- * Be sure to check the type with json_object_is_type() or
- * json_object_get_type() before using the object.
- *
- * @b XXX this shouldn't use internal fields:
- * Trailing characters after the parsed value do not automatically cause an
- * error. It is up to the caller to decide whether to treat this as an
- * error or to handle the additional characters, perhaps by parsing another
- * json value starting from that point.
- *
- * Extra characters can be detected by comparing the tok->char_offset against
- * the length of the last len parameter passed in.
- *
- * The tokener does \b not maintain an internal buffer so the caller is
- * responsible for calling json_tokener_parse_ex with an appropriate str
- * parameter starting with the extra characters.
- *
- * This interface is presently not 64-bit clean due to the int len argument
- * so the function limits the maximum string size to INT32_MAX (2GB).
- * If the function is called with len == -1 then strlen is called to check
- * the string length is less than INT32_MAX (2GB)
- *
- * Example:
- * @code
-json_object *jobj = NULL;
-const char *mystring = NULL;
-int stringlen = 0;
-enum json_tokener_error jerr;
-do {
- mystring = ... // get JSON string, e.g. read from file, etc...
- stringlen = strlen(mystring);
- jobj = json_tokener_parse_ex(tok, mystring, stringlen);
-} while ((jerr = json_tokener_get_error(tok)) == json_tokener_continue);
-if (jerr != json_tokener_success)
-{
- fprintf(stderr, "Error: %s\n", json_tokener_error_desc(jerr));
- // Handle errors, as appropriate for your application.
-}
-if (tok->char_offset < stringlen) // XXX shouldn't access internal fields
-{
- // Handle extra characters after parsed object as desired.
- // e.g. issue an error, parse another object from that point, etc...
-}
-// Success, use jobj here.
-
-@endcode
- *
- * @param tok a json_tokener previously allocated with json_tokener_new()
- * @param str an string with any valid JSON expression, or portion of. This does not need to be null terminated.
- * @param len the length of str
- */
-extern struct json_object* json_tokener_parse_ex(struct json_tokener *tok,
- const char *str, int len);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/json-c/json_util.c b/json-c/json_util.c
deleted file mode 100644
index 2a5621b0..00000000
--- a/json-c/json_util.c
+++ /dev/null
@@ -1,299 +0,0 @@
-/*
- * $Id: json_util.c,v 1.4 2006/01/30 23:07:57 mclark Exp $
- *
- * Copyright (c) 2004, 2005 Metaparadigm Pte. Ltd.
- * Michael Clark <michael@metaparadigm.com>
- *
- * This library is free software; you can redistribute it and/or modify
- * it under the terms of the MIT license. See COPYING for details.
- *
- */
-
-#include "config.h"
-#undef realloc
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <stddef.h>
-#include <limits.h>
-#include <string.h>
-#include <errno.h>
-#include <ctype.h>
-
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif /* HAVE_SYS_TYPES_H */
-
-#ifdef HAVE_SYS_STAT_H
-#include <sys/stat.h>
-#endif /* HAVE_SYS_STAT_H */
-
-#ifdef HAVE_FCNTL_H
-#include <fcntl.h>
-#endif /* HAVE_FCNTL_H */
-
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif /* HAVE_UNISTD_H */
-
-#ifdef WIN32
-# define WIN32_LEAN_AND_MEAN
-# include <windows.h>
-# include <io.h>
-#endif /* defined(WIN32) */
-
-#if !defined(HAVE_OPEN) && defined(WIN32)
-# define open _open
-#endif
-
-#if !defined(HAVE_SNPRINTF) && defined(_MSC_VER)
- /* MSC has the version as _snprintf */
-# define snprintf _snprintf
-#elif !defined(HAVE_SNPRINTF)
-# error You do not have snprintf on your system.
-#endif /* HAVE_SNPRINTF */
-
-#include "debug.h"
-#include "printbuf.h"
-#include "json_inttypes.h"
-#include "json_object.h"
-#include "json_tokener.h"
-#include "json_util.h"
-
-static int sscanf_is_broken = 0;
-static int sscanf_is_broken_testdone = 0;
-static void sscanf_is_broken_test(void);
-
-struct json_object* json_object_from_file(const char *filename)
-{
- struct printbuf *pb;
- struct json_object *obj;
- char buf[JSON_FILE_BUF_SIZE];
- int fd, ret;
-
- if((fd = open(filename, O_RDONLY)) < 0) {
- MC_ERROR("json_object_from_file: error opening file %s: %s\n",
- filename, strerror(errno));
- return NULL;
- }
- if(!(pb = printbuf_new())) {
- close(fd);
- MC_ERROR("json_object_from_file: printbuf_new failed\n");
- return NULL;
- }
- while((ret = read(fd, buf, JSON_FILE_BUF_SIZE)) > 0) {
- printbuf_memappend(pb, buf, ret);
- }
- close(fd);
- if(ret < 0) {
- MC_ERROR("json_object_from_file: error reading file %s: %s\n",
- filename, strerror(errno));
- printbuf_free(pb);
- return NULL;
- }
- obj = json_tokener_parse(pb->buf);
- printbuf_free(pb);
- return obj;
-}
-
-/* extended "format and write to file" function */
-
-int json_object_to_file_ext(const char *filename, struct json_object *obj, int flags)
-{
- const char *json_str;
- int fd, ret;
- unsigned int wpos, wsize;
-
- if(!obj) {
- MC_ERROR("json_object_to_file: object is null\n");
- return -1;
- }
-
- if((fd = open(filename, O_WRONLY | O_TRUNC | O_CREAT, 0644)) < 0) {
- MC_ERROR("json_object_to_file: error opening file %s: %s\n",
- filename, strerror(errno));
- return -1;
- }
-
- if(!(json_str = json_object_to_json_string_ext(obj,flags))) {
- close(fd);
- return -1;
- }
-
- wsize = (unsigned int)(strlen(json_str) & UINT_MAX); /* CAW: probably unnecessary, but the most 64bit safe */
- wpos = 0;
- while(wpos < wsize) {
- if((ret = write(fd, json_str + wpos, wsize-wpos)) < 0) {
- close(fd);
- MC_ERROR("json_object_to_file: error writing file %s: %s\n",
- filename, strerror(errno));
- return -1;
- }
-
- /* because of the above check for ret < 0, we can safely cast and add */
- wpos += (unsigned int)ret;
- }
-
- close(fd);
- return 0;
-}
-
-// backwards compatible "format and write to file" function
-
-int json_object_to_file(const char *filename, struct json_object *obj)
-{
- return json_object_to_file_ext(filename, obj, JSON_C_TO_STRING_PLAIN);
-}
-
-int json_parse_double(const char *buf, double *retval)
-{
- return (sscanf(buf, "%lf", retval)==1 ? 0 : 1);
-}
-
-/*
- * Not all implementations of sscanf actually work properly.
- * Check whether the one we're currently using does, and if
- * it's broken, enable the workaround code.
- */
-static void sscanf_is_broken_test()
-{
- int64_t num64;
- int ret_errno, is_int64_min, ret_errno2, is_int64_max;
-
- (void)sscanf(" -01234567890123456789012345", "%" SCNd64, &num64);
- ret_errno = errno;
- is_int64_min = (num64 == INT64_MIN);
-
- (void)sscanf(" 01234567890123456789012345", "%" SCNd64, &num64);
- ret_errno2 = errno;
- is_int64_max = (num64 == INT64_MAX);
-
- if (ret_errno != ERANGE || !is_int64_min ||
- ret_errno2 != ERANGE || !is_int64_max)
- {
- MC_DEBUG("sscanf_is_broken_test failed, enabling workaround code\n");
- sscanf_is_broken = 1;
- }
-}
-
-int json_parse_int64(const char *buf, int64_t *retval)
-{
- int64_t num64;
- const char *buf_sig_digits;
- int orig_has_neg;
- int saved_errno;
-
- if (!sscanf_is_broken_testdone)
- {
- sscanf_is_broken_test();
- sscanf_is_broken_testdone = 1;
- }
-
- // Skip leading spaces
- while (isspace((int)*buf) && *buf)
- buf++;
-
- errno = 0; // sscanf won't always set errno, so initialize
- if (sscanf(buf, "%" SCNd64, &num64) != 1)
- {
- MC_DEBUG("Failed to parse, sscanf != 1\n");
- return 1;
- }
-
- saved_errno = errno;
- buf_sig_digits = buf;
- orig_has_neg = 0;
- if (*buf_sig_digits == '-')
- {
- buf_sig_digits++;
- orig_has_neg = 1;
- }
-
- // Not all sscanf implementations actually work
- if (sscanf_is_broken && saved_errno != ERANGE)
- {
- char buf_cmp[100];
- char *buf_cmp_start = buf_cmp;
- int recheck_has_neg = 0;
- int buf_cmp_len;
-
- // Skip leading zeros, but keep at least one digit
- while (buf_sig_digits[0] == '0' && buf_sig_digits[1] != '\0')
- buf_sig_digits++;
- if (num64 == 0) // assume all sscanf impl's will parse -0 to 0
- orig_has_neg = 0; // "-0" is the same as just plain "0"
-
- snprintf(buf_cmp_start, sizeof(buf_cmp), "%" PRId64, num64);
- if (*buf_cmp_start == '-')
- {
- recheck_has_neg = 1;
- buf_cmp_start++;
- }
- // No need to skip leading spaces or zeros here.
-
- buf_cmp_len = strlen(buf_cmp_start);
- /**
- * If the sign is different, or
- * some of the digits are different, or
- * there is another digit present in the original string
- * then we have NOT successfully parsed the value.
- */
- if (orig_has_neg != recheck_has_neg ||
- strncmp(buf_sig_digits, buf_cmp_start, strlen(buf_cmp_start)) != 0 ||
- ((int)strlen(buf_sig_digits) != buf_cmp_len &&
- isdigit((int)buf_sig_digits[buf_cmp_len])
- )
- )
- {
- saved_errno = ERANGE;
- }
- }
-
- // Not all sscanf impl's set the value properly when out of range.
- // Always do this, even for properly functioning implementations,
- // since it shouldn't slow things down much.
- if (saved_errno == ERANGE)
- {
- if (orig_has_neg)
- num64 = INT64_MIN;
- else
- num64 = INT64_MAX;
- }
- *retval = num64;
- return 0;
-}
-
-#ifndef HAVE_REALLOC
-void* rpl_realloc(void* p, size_t n)
-{
- if (n == 0)
- n = 1;
- if (p == 0)
- return malloc(n);
- return realloc(p, n);
-}
-#endif
-
-#define NELEM(a) (sizeof(a) / sizeof(a[0]))
-static const char* json_type_name[] = {
- /* If you change this, be sure to update the enum json_type definition too */
- "null",
- "boolean",
- "double",
- "int",
- "object",
- "array",
- "string",
-};
-
-const char *json_type_to_name(enum json_type o_type)
-{
- int o_type_int = (int)o_type;
- if (o_type_int < 0 || o_type_int >= (int)NELEM(json_type_name))
- {
- MC_ERROR("json_type_to_name: type %d is out of range [0,%d]\n", o_type, NELEM(json_type_name));
- return NULL;
- }
- return json_type_name[o_type];
-}
-
diff --git a/json-c/json_util.h b/json-c/json_util.h
deleted file mode 100644
index 387dbc47..00000000
--- a/json-c/json_util.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * $Id: json_util.h,v 1.4 2006/01/30 23:07:57 mclark Exp $
- *
- * Copyright (c) 2004, 2005 Metaparadigm Pte. Ltd.
- * Michael Clark <michael@metaparadigm.com>
- *
- * This library is free software; you can redistribute it and/or modify
- * it under the terms of the MIT license. See COPYING for details.
- *
- */
-
-#ifndef _json_util_h_
-#define _json_util_h_
-
-#include "json_object.h"
-
-#ifndef json_min
-#define json_min(a,b) ((a) < (b) ? (a) : (b))
-#endif
-
-#ifndef json_max
-#define json_max(a,b) ((a) > (b) ? (a) : (b))
-#endif
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define JSON_FILE_BUF_SIZE 4096
-
-/* utility functions */
-extern struct json_object* json_object_from_file(const char *filename);
-extern int json_object_to_file(const char *filename, struct json_object *obj);
-extern int json_object_to_file_ext(const char *filename, struct json_object *obj, int flags);
-extern int json_parse_int64(const char *buf, int64_t *retval);
-extern int json_parse_double(const char *buf, double *retval);
-
-
-/**
- * Return a string describing the type of the object.
- * e.g. "int", or "object", etc...
- */
-extern const char *json_type_to_name(enum json_type o_type);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/json-c/libjson.c b/json-c/libjson.c
deleted file mode 100644
index 5284fd0e..00000000
--- a/json-c/libjson.c
+++ /dev/null
@@ -1,26 +0,0 @@
-
-/* dummy source file for compatibility purposes */
-
-#if defined(HAVE_CDEFS_H)
-#include <sys/cdefs.h>
-#endif
-
-#ifndef __warn_references
-
-#if defined(__GNUC__) && defined (HAS_GNU_WARNING_LONG)
-
-#define __warn_references(sym,msg) \
- __asm__(".section .gnu" #sym ",\n\t.ascii \"" msg "\"\n\t.text");
-
-#else
-#define __warn_references(sym,msg) /* nothing */
-#endif
-
-#endif
-
-#include "json_object.h"
-
-__warn_references(json_object_get, "Warning: please link against libjson-c instead of libjson");
-
-/* __asm__(".section .gnu.warning." __STRING(sym) \
- " ; .ascii \"" msg "\" ; .text") */
diff --git a/json-c/linkhash.c b/json-c/linkhash.c
deleted file mode 100644
index 712c3879..00000000
--- a/json-c/linkhash.c
+++ /dev/null
@@ -1,602 +0,0 @@
-/*
- * $Id: linkhash.c,v 1.4 2006/01/26 02:16:28 mclark Exp $
- *
- * Copyright (c) 2004, 2005 Metaparadigm Pte. Ltd.
- * Michael Clark <michael@metaparadigm.com>
- * Copyright (c) 2009 Hewlett-Packard Development Company, L.P.
- *
- * This library is free software; you can redistribute it and/or modify
- * it under the terms of the MIT license. See COPYING for details.
- *
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <stdarg.h>
-#include <stddef.h>
-#include <limits.h>
-
-#ifdef HAVE_ENDIAN_H
-# include <endian.h> /* attempt to define endianness */
-#endif
-
-#include "random_seed.h"
-#include "linkhash.h"
-
-void lh_abort(const char *msg, ...)
-{
- va_list ap;
- va_start(ap, msg);
- vprintf(msg, ap);
- va_end(ap);
- exit(1);
-}
-
-unsigned long lh_ptr_hash(const void *k)
-{
- /* CAW: refactored to be 64bit nice */
- return (unsigned long)((((ptrdiff_t)k * LH_PRIME) >> 4) & ULONG_MAX);
-}
-
-int lh_ptr_equal(const void *k1, const void *k2)
-{
- return (k1 == k2);
-}
-
-/*
- * hashlittle from lookup3.c, by Bob Jenkins, May 2006, Public Domain.
- * http://burtleburtle.net/bob/c/lookup3.c
- * minor modifications to make functions static so no symbols are exported
- * minor mofifications to compile with -Werror
- */
-
-/*
--------------------------------------------------------------------------------
-lookup3.c, by Bob Jenkins, May 2006, Public Domain.
-
-These are functions for producing 32-bit hashes for hash table lookup.
-hashword(), hashlittle(), hashlittle2(), hashbig(), mix(), and final()
-are externally useful functions. Routines to test the hash are included
-if SELF_TEST is defined. You can use this free for any purpose. It's in
-the public domain. It has no warranty.
-
-You probably want to use hashlittle(). hashlittle() and hashbig()
-hash byte arrays. hashlittle() is is faster than hashbig() on
-little-endian machines. Intel and AMD are little-endian machines.
-On second thought, you probably want hashlittle2(), which is identical to
-hashlittle() except it returns two 32-bit hashes for the price of one.
-You could implement hashbig2() if you wanted but I haven't bothered here.
-
-If you want to find a hash of, say, exactly 7 integers, do
- a = i1; b = i2; c = i3;
- mix(a,b,c);
- a += i4; b += i5; c += i6;
- mix(a,b,c);
- a += i7;
- final(a,b,c);
-then use c as the hash value. If you have a variable length array of
-4-byte integers to hash, use hashword(). If you have a byte array (like
-a character string), use hashlittle(). If you have several byte arrays, or
-a mix of things, see the comments above hashlittle().
-
-Why is this so big? I read 12 bytes at a time into 3 4-byte integers,
-then mix those integers. This is fast (you can do a lot more thorough
-mixing with 12*3 instructions on 3 integers than you can with 3 instructions
-on 1 byte), but shoehorning those bytes into integers efficiently is messy.
--------------------------------------------------------------------------------
-*/
-
-/*
- * My best guess at if you are big-endian or little-endian. This may
- * need adjustment.
- */
-#if (defined(__BYTE_ORDER) && defined(__LITTLE_ENDIAN) && \
- __BYTE_ORDER == __LITTLE_ENDIAN) || \
- (defined(i386) || defined(__i386__) || defined(__i486__) || \
- defined(__i586__) || defined(__i686__) || defined(vax) || defined(MIPSEL))
-# define HASH_LITTLE_ENDIAN 1
-# define HASH_BIG_ENDIAN 0
-#elif (defined(__BYTE_ORDER) && defined(__BIG_ENDIAN) && \
- __BYTE_ORDER == __BIG_ENDIAN) || \
- (defined(sparc) || defined(POWERPC) || defined(mc68000) || defined(sel))
-# define HASH_LITTLE_ENDIAN 0
-# define HASH_BIG_ENDIAN 1
-#else
-# define HASH_LITTLE_ENDIAN 0
-# define HASH_BIG_ENDIAN 0
-#endif
-
-#define hashsize(n) ((uint32_t)1<<(n))
-#define hashmask(n) (hashsize(n)-1)
-#define rot(x,k) (((x)<<(k)) | ((x)>>(32-(k))))
-
-/*
--------------------------------------------------------------------------------
-mix -- mix 3 32-bit values reversibly.
-
-This is reversible, so any information in (a,b,c) before mix() is
-still in (a,b,c) after mix().
-
-If four pairs of (a,b,c) inputs are run through mix(), or through
-mix() in reverse, there are at least 32 bits of the output that
-are sometimes the same for one pair and different for another pair.
-This was tested for:
-* pairs that differed by one bit, by two bits, in any combination
- of top bits of (a,b,c), or in any combination of bottom bits of
- (a,b,c).
-* "differ" is defined as +, -, ^, or ~^. For + and -, I transformed
- the output delta to a Gray code (a^(a>>1)) so a string of 1's (as
- is commonly produced by subtraction) look like a single 1-bit
- difference.
-* the base values were pseudorandom, all zero but one bit set, or
- all zero plus a counter that starts at zero.
-
-Some k values for my "a-=c; a^=rot(c,k); c+=b;" arrangement that
-satisfy this are
- 4 6 8 16 19 4
- 9 15 3 18 27 15
- 14 9 3 7 17 3
-Well, "9 15 3 18 27 15" didn't quite get 32 bits diffing
-for "differ" defined as + with a one-bit base and a two-bit delta. I
-used http://burtleburtle.net/bob/hash/avalanche.html to choose
-the operations, constants, and arrangements of the variables.
-
-This does not achieve avalanche. There are input bits of (a,b,c)
-that fail to affect some output bits of (a,b,c), especially of a. The
-most thoroughly mixed value is c, but it doesn't really even achieve
-avalanche in c.
-
-This allows some parallelism. Read-after-writes are good at doubling
-the number of bits affected, so the goal of mixing pulls in the opposite
-direction as the goal of parallelism. I did what I could. Rotates
-seem to cost as much as shifts on every machine I could lay my hands
-on, and rotates are much kinder to the top and bottom bits, so I used
-rotates.
--------------------------------------------------------------------------------
-*/
-#define mix(a,b,c) \
-{ \
- a -= c; a ^= rot(c, 4); c += b; \
- b -= a; b ^= rot(a, 6); a += c; \
- c -= b; c ^= rot(b, 8); b += a; \
- a -= c; a ^= rot(c,16); c += b; \
- b -= a; b ^= rot(a,19); a += c; \
- c -= b; c ^= rot(b, 4); b += a; \
-}
-
-/*
--------------------------------------------------------------------------------
-final -- final mixing of 3 32-bit values (a,b,c) into c
-
-Pairs of (a,b,c) values differing in only a few bits will usually
-produce values of c that look totally different. This was tested for
-* pairs that differed by one bit, by two bits, in any combination
- of top bits of (a,b,c), or in any combination of bottom bits of
- (a,b,c).
-* "differ" is defined as +, -, ^, or ~^. For + and -, I transformed
- the output delta to a Gray code (a^(a>>1)) so a string of 1's (as
- is commonly produced by subtraction) look like a single 1-bit
- difference.
-* the base values were pseudorandom, all zero but one bit set, or
- all zero plus a counter that starts at zero.
-
-These constants passed:
- 14 11 25 16 4 14 24
- 12 14 25 16 4 14 24
-and these came close:
- 4 8 15 26 3 22 24
- 10 8 15 26 3 22 24
- 11 8 15 26 3 22 24
--------------------------------------------------------------------------------
-*/
-#define final(a,b,c) \
-{ \
- c ^= b; c -= rot(b,14); \
- a ^= c; a -= rot(c,11); \
- b ^= a; b -= rot(a,25); \
- c ^= b; c -= rot(b,16); \
- a ^= c; a -= rot(c,4); \
- b ^= a; b -= rot(a,14); \
- c ^= b; c -= rot(b,24); \
-}
-
-
-/*
--------------------------------------------------------------------------------
-hashlittle() -- hash a variable-length key into a 32-bit value
- k : the key (the unaligned variable-length array of bytes)
- length : the length of the key, counting by bytes
- initval : can be any 4-byte value
-Returns a 32-bit value. Every bit of the key affects every bit of
-the return value. Two keys differing by one or two bits will have
-totally different hash values.
-
-The best hash table sizes are powers of 2. There is no need to do
-mod a prime (mod is sooo slow!). If you need less than 32 bits,
-use a bitmask. For example, if you need only 10 bits, do
- h = (h & hashmask(10));
-In which case, the hash table should have hashsize(10) elements.
-
-If you are hashing n strings (uint8_t **)k, do it like this:
- for (i=0, h=0; i<n; ++i) h = hashlittle( k[i], len[i], h);
-
-By Bob Jenkins, 2006. bob_jenkins@burtleburtle.net. You may use this
-code any way you wish, private, educational, or commercial. It's free.
-
-Use for hash table lookup, or anything where one collision in 2^^32 is
-acceptable. Do NOT use for cryptographic purposes.
--------------------------------------------------------------------------------
-*/
-
-static uint32_t hashlittle( const void *key, size_t length, uint32_t initval)
-{
- uint32_t a,b,c; /* internal state */
- union { const void *ptr; size_t i; } u; /* needed for Mac Powerbook G4 */
-
- /* Set up the internal state */
- a = b = c = 0xdeadbeef + ((uint32_t)length) + initval;
-
- u.ptr = key;
- if (HASH_LITTLE_ENDIAN && ((u.i & 0x3) == 0)) {
- const uint32_t *k = (const uint32_t *)key; /* read 32-bit chunks */
-
- /*------ all but last block: aligned reads and affect 32 bits of (a,b,c) */
- while (length > 12)
- {
- a += k[0];
- b += k[1];
- c += k[2];
- mix(a,b,c);
- length -= 12;
- k += 3;
- }
-
- /*----------------------------- handle the last (probably partial) block */
- /*
- * "k[2]&0xffffff" actually reads beyond the end of the string, but
- * then masks off the part it's not allowed to read. Because the
- * string is aligned, the masked-off tail is in the same word as the
- * rest of the string. Every machine with memory protection I've seen
- * does it on word boundaries, so is OK with this. But VALGRIND will
- * still catch it and complain. The masking trick does make the hash
- * noticably faster for short strings (like English words).
- */
-#ifndef VALGRIND
-
- switch(length)
- {
- case 12: c+=k[2]; b+=k[1]; a+=k[0]; break;
- case 11: c+=k[2]&0xffffff; b+=k[1]; a+=k[0]; break;
- case 10: c+=k[2]&0xffff; b+=k[1]; a+=k[0]; break;
- case 9 : c+=k[2]&0xff; b+=k[1]; a+=k[0]; break;
- case 8 : b+=k[1]; a+=k[0]; break;
- case 7 : b+=k[1]&0xffffff; a+=k[0]; break;
- case 6 : b+=k[1]&0xffff; a+=k[0]; break;
- case 5 : b+=k[1]&0xff; a+=k[0]; break;
- case 4 : a+=k[0]; break;
- case 3 : a+=k[0]&0xffffff; break;
- case 2 : a+=k[0]&0xffff; break;
- case 1 : a+=k[0]&0xff; break;
- case 0 : return c; /* zero length strings require no mixing */
- }
-
-#else /* make valgrind happy */
-
- const uint8_t *k8 = (const uint8_t *)k;
- switch(length)
- {
- case 12: c+=k[2]; b+=k[1]; a+=k[0]; break;
- case 11: c+=((uint32_t)k8[10])<<16; /* fall through */
- case 10: c+=((uint32_t)k8[9])<<8; /* fall through */
- case 9 : c+=k8[8]; /* fall through */
- case 8 : b+=k[1]; a+=k[0]; break;
- case 7 : b+=((uint32_t)k8[6])<<16; /* fall through */
- case 6 : b+=((uint32_t)k8[5])<<8; /* fall through */
- case 5 : b+=k8[4]; /* fall through */
- case 4 : a+=k[0]; break;
- case 3 : a+=((uint32_t)k8[2])<<16; /* fall through */
- case 2 : a+=((uint32_t)k8[1])<<8; /* fall through */
- case 1 : a+=k8[0]; break;
- case 0 : return c;
- }
-
-#endif /* !valgrind */
-
- } else if (HASH_LITTLE_ENDIAN && ((u.i & 0x1) == 0)) {
- const uint16_t *k = (const uint16_t *)key; /* read 16-bit chunks */
- const uint8_t *k8;
-
- /*--------------- all but last block: aligned reads and different mixing */
- while (length > 12)
- {
- a += k[0] + (((uint32_t)k[1])<<16);
- b += k[2] + (((uint32_t)k[3])<<16);
- c += k[4] + (((uint32_t)k[5])<<16);
- mix(a,b,c);
- length -= 12;
- k += 6;
- }
-
- /*----------------------------- handle the last (probably partial) block */
- k8 = (const uint8_t *)k;
- switch(length)
- {
- case 12: c+=k[4]+(((uint32_t)k[5])<<16);
- b+=k[2]+(((uint32_t)k[3])<<16);
- a+=k[0]+(((uint32_t)k[1])<<16);
- break;
- case 11: c+=((uint32_t)k8[10])<<16; /* fall through */
- case 10: c+=k[4];
- b+=k[2]+(((uint32_t)k[3])<<16);
- a+=k[0]+(((uint32_t)k[1])<<16);
- break;
- case 9 : c+=k8[8]; /* fall through */
- case 8 : b+=k[2]+(((uint32_t)k[3])<<16);
- a+=k[0]+(((uint32_t)k[1])<<16);
- break;
- case 7 : b+=((uint32_t)k8[6])<<16; /* fall through */
- case 6 : b+=k[2];
- a+=k[0]+(((uint32_t)k[1])<<16);
- break;
- case 5 : b+=k8[4]; /* fall through */
- case 4 : a+=k[0]+(((uint32_t)k[1])<<16);
- break;
- case 3 : a+=((uint32_t)k8[2])<<16; /* fall through */
- case 2 : a+=k[0];
- break;
- case 1 : a+=k8[0];
- break;
- case 0 : return c; /* zero length requires no mixing */
- }
-
- } else { /* need to read the key one byte at a time */
- const uint8_t *k = (const uint8_t *)key;
-
- /*--------------- all but the last block: affect some 32 bits of (a,b,c) */
- while (length > 12)
- {
- a += k[0];
- a += ((uint32_t)k[1])<<8;
- a += ((uint32_t)k[2])<<16;
- a += ((uint32_t)k[3])<<24;
- b += k[4];
- b += ((uint32_t)k[5])<<8;
- b += ((uint32_t)k[6])<<16;
- b += ((uint32_t)k[7])<<24;
- c += k[8];
- c += ((uint32_t)k[9])<<8;
- c += ((uint32_t)k[10])<<16;
- c += ((uint32_t)k[11])<<24;
- mix(a,b,c);
- length -= 12;
- k += 12;
- }
-
- /*-------------------------------- last block: affect all 32 bits of (c) */
- switch(length) /* all the case statements fall through */
- {
- case 12: c+=((uint32_t)k[11])<<24;
- case 11: c+=((uint32_t)k[10])<<16;
- case 10: c+=((uint32_t)k[9])<<8;
- case 9 : c+=k[8];
- case 8 : b+=((uint32_t)k[7])<<24;
- case 7 : b+=((uint32_t)k[6])<<16;
- case 6 : b+=((uint32_t)k[5])<<8;
- case 5 : b+=k[4];
- case 4 : a+=((uint32_t)k[3])<<24;
- case 3 : a+=((uint32_t)k[2])<<16;
- case 2 : a+=((uint32_t)k[1])<<8;
- case 1 : a+=k[0];
- break;
- case 0 : return c;
- }
- }
-
- final(a,b,c);
- return c;
-}
-
-unsigned long lh_char_hash(const void *k)
-{
- static volatile int random_seed = -1;
-
- if (random_seed == -1) {
- int seed;
- /* we can't use -1 as it is the unitialized sentinel */
- while ((seed = json_c_get_random_seed()) == -1);
-#if defined __GNUC__
- __sync_val_compare_and_swap(&random_seed, -1, seed);
-#elif defined _MSC_VER
- InterlockedCompareExchange(&random_seed, seed, -1);
-#else
-#warning "racy random seed initializtion if used by multiple threads"
- random_seed = seed; /* potentially racy */
-#endif
- }
-
- return hashlittle((const char*)k, strlen((const char*)k), random_seed);
-}
-
-int lh_char_equal(const void *k1, const void *k2)
-{
- return (strcmp((const char*)k1, (const char*)k2) == 0);
-}
-
-struct lh_table* lh_table_new(int size, const char *name,
- lh_entry_free_fn *free_fn,
- lh_hash_fn *hash_fn,
- lh_equal_fn *equal_fn)
-{
- int i;
- struct lh_table *t;
-
- t = (struct lh_table*)calloc(1, sizeof(struct lh_table));
- if(!t) lh_abort("lh_table_new: calloc failed\n");
- t->count = 0;
- t->size = size;
- t->name = name;
- t->table = (struct lh_entry*)calloc(size, sizeof(struct lh_entry));
- if(!t->table) lh_abort("lh_table_new: calloc failed\n");
- t->free_fn = free_fn;
- t->hash_fn = hash_fn;
- t->equal_fn = equal_fn;
- for(i = 0; i < size; i++) t->table[i].k = LH_EMPTY;
- return t;
-}
-
-struct lh_table* lh_kchar_table_new(int size, const char *name,
- lh_entry_free_fn *free_fn)
-{
- return lh_table_new(size, name, free_fn, lh_char_hash, lh_char_equal);
-}
-
-struct lh_table* lh_kptr_table_new(int size, const char *name,
- lh_entry_free_fn *free_fn)
-{
- return lh_table_new(size, name, free_fn, lh_ptr_hash, lh_ptr_equal);
-}
-
-void lh_table_resize(struct lh_table *t, int new_size)
-{
- struct lh_table *new_t;
- struct lh_entry *ent;
-
- new_t = lh_table_new(new_size, t->name, NULL, t->hash_fn, t->equal_fn);
- ent = t->head;
- while(ent) {
- lh_table_insert(new_t, ent->k, ent->v);
- ent = ent->next;
- }
- free(t->table);
- t->table = new_t->table;
- t->size = new_size;
- t->head = new_t->head;
- t->tail = new_t->tail;
- t->resizes++;
- free(new_t);
-}
-
-void lh_table_free(struct lh_table *t)
-{
- struct lh_entry *c;
- for(c = t->head; c != NULL; c = c->next) {
- if(t->free_fn) {
- t->free_fn(c);
- }
- }
- free(t->table);
- free(t);
-}
-
-
-int lh_table_insert(struct lh_table *t, void *k, const void *v)
-{
- unsigned long h, n;
-
- t->inserts++;
- if(t->count >= t->size * LH_LOAD_FACTOR) lh_table_resize(t, t->size * 2);
-
- h = t->hash_fn(k);
- n = h % t->size;
-
- while( 1 ) {
- if(t->table[n].k == LH_EMPTY || t->table[n].k == LH_FREED) break;
- t->collisions++;
- if ((int)++n == t->size) n = 0;
- }
-
- t->table[n].k = k;
- t->table[n].v = v;
- t->count++;
-
- if(t->head == NULL) {
- t->head = t->tail = &t->table[n];
- t->table[n].next = t->table[n].prev = NULL;
- } else {
- t->tail->next = &t->table[n];
- t->table[n].prev = t->tail;
- t->table[n].next = NULL;
- t->tail = &t->table[n];
- }
-
- return 0;
-}
-
-
-struct lh_entry* lh_table_lookup_entry(struct lh_table *t, const void *k)
-{
- unsigned long h = t->hash_fn(k);
- unsigned long n = h % t->size;
- int count = 0;
-
- t->lookups++;
- while( count < t->size ) {
- if(t->table[n].k == LH_EMPTY) return NULL;
- if(t->table[n].k != LH_FREED &&
- t->equal_fn(t->table[n].k, k)) return &t->table[n];
- if ((int)++n == t->size) n = 0;
- count++;
- }
- return NULL;
-}
-
-
-const void* lh_table_lookup(struct lh_table *t, const void *k)
-{
- void *result;
- lh_table_lookup_ex(t, k, &result);
- return result;
-}
-
-json_bool lh_table_lookup_ex(struct lh_table* t, const void* k, void **v)
-{
- struct lh_entry *e = lh_table_lookup_entry(t, k);
- if (e != NULL) {
- if (v != NULL) *v = (void *)e->v;
- return TRUE; /* key found */
- }
- if (v != NULL) *v = NULL;
- return FALSE; /* key not found */
-}
-
-int lh_table_delete_entry(struct lh_table *t, struct lh_entry *e)
-{
- ptrdiff_t n = (ptrdiff_t)(e - t->table); /* CAW: fixed to be 64bit nice, still need the crazy negative case... */
-
- /* CAW: this is bad, really bad, maybe stack goes other direction on this machine... */
- if(n < 0) { return -2; }
-
- if(t->table[n].k == LH_EMPTY || t->table[n].k == LH_FREED) return -1;
- t->count--;
- if(t->free_fn) t->free_fn(e);
- t->table[n].v = NULL;
- t->table[n].k = LH_FREED;
- if(t->tail == &t->table[n] && t->head == &t->table[n]) {
- t->head = t->tail = NULL;
- } else if (t->head == &t->table[n]) {
- t->head->next->prev = NULL;
- t->head = t->head->next;
- } else if (t->tail == &t->table[n]) {
- t->tail->prev->next = NULL;
- t->tail = t->tail->prev;
- } else {
- t->table[n].prev->next = t->table[n].next;
- t->table[n].next->prev = t->table[n].prev;
- }
- t->table[n].next = t->table[n].prev = NULL;
- return 0;
-}
-
-
-int lh_table_delete(struct lh_table *t, const void *k)
-{
- struct lh_entry *e = lh_table_lookup_entry(t, k);
- if(!e) return -1;
- return lh_table_delete_entry(t, e);
-}
-
-int lh_table_length(struct lh_table *t)
-{
- return t->count;
-}
diff --git a/json-c/linkhash.h b/json-c/linkhash.h
deleted file mode 100644
index 950d09f3..00000000
--- a/json-c/linkhash.h
+++ /dev/null
@@ -1,292 +0,0 @@
-/*
- * $Id: linkhash.h,v 1.6 2006/01/30 23:07:57 mclark Exp $
- *
- * Copyright (c) 2004, 2005 Metaparadigm Pte. Ltd.
- * Michael Clark <michael@metaparadigm.com>
- * Copyright (c) 2009 Hewlett-Packard Development Company, L.P.
- *
- * This library is free software; you can redistribute it and/or modify
- * it under the terms of the MIT license. See COPYING for details.
- *
- */
-
-#ifndef _linkhash_h_
-#define _linkhash_h_
-
-#include "json_object.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * golden prime used in hash functions
- */
-#define LH_PRIME 0x9e370001UL
-
-/**
- * The fraction of filled hash buckets until an insert will cause the table
- * to be resized.
- * This can range from just above 0 up to 1.0.
- */
-#define LH_LOAD_FACTOR 0.66
-
-/**
- * sentinel pointer value for empty slots
- */
-#define LH_EMPTY (void*)-1
-
-/**
- * sentinel pointer value for freed slots
- */
-#define LH_FREED (void*)-2
-
-struct lh_entry;
-
-/**
- * callback function prototypes
- */
-typedef void (lh_entry_free_fn) (struct lh_entry *e);
-/**
- * callback function prototypes
- */
-typedef unsigned long (lh_hash_fn) (const void *k);
-/**
- * callback function prototypes
- */
-typedef int (lh_equal_fn) (const void *k1, const void *k2);
-
-/**
- * An entry in the hash table
- */
-struct lh_entry {
- /**
- * The key.
- */
- void *k;
- /**
- * The value.
- */
- const void *v;
- /**
- * The next entry
- */
- struct lh_entry *next;
- /**
- * The previous entry.
- */
- struct lh_entry *prev;
-};
-
-
-/**
- * The hash table structure.
- */
-struct lh_table {
- /**
- * Size of our hash.
- */
- int size;
- /**
- * Numbers of entries.
- */
- int count;
-
- /**
- * Number of collisions.
- */
- int collisions;
-
- /**
- * Number of resizes.
- */
- int resizes;
-
- /**
- * Number of lookups.
- */
- int lookups;
-
- /**
- * Number of inserts.
- */
- int inserts;
-
- /**
- * Number of deletes.
- */
- int deletes;
-
- /**
- * Name of the hash table.
- */
- const char *name;
-
- /**
- * The first entry.
- */
- struct lh_entry *head;
-
- /**
- * The last entry.
- */
- struct lh_entry *tail;
-
- struct lh_entry *table;
-
- /**
- * A pointer onto the function responsible for freeing an entry.
- */
- lh_entry_free_fn *free_fn;
- lh_hash_fn *hash_fn;
- lh_equal_fn *equal_fn;
-};
-
-
-/**
- * Pre-defined hash and equality functions
- */
-extern unsigned long lh_ptr_hash(const void *k);
-extern int lh_ptr_equal(const void *k1, const void *k2);
-
-extern unsigned long lh_char_hash(const void *k);
-extern int lh_char_equal(const void *k1, const void *k2);
-
-
-/**
- * Convenience list iterator.
- */
-#define lh_foreach(table, entry) \
-for(entry = table->head; entry; entry = entry->next)
-
-/**
- * lh_foreach_safe allows calling of deletion routine while iterating.
- */
-#define lh_foreach_safe(table, entry, tmp) \
-for(entry = table->head; entry && ((tmp = entry->next) || 1); entry = tmp)
-
-
-
-/**
- * Create a new linkhash table.
- * @param size initial table size. The table is automatically resized
- * although this incurs a performance penalty.
- * @param name the table name.
- * @param free_fn callback function used to free memory for entries
- * when lh_table_free or lh_table_delete is called.
- * If NULL is provided, then memory for keys and values
- * must be freed by the caller.
- * @param hash_fn function used to hash keys. 2 standard ones are defined:
- * lh_ptr_hash and lh_char_hash for hashing pointer values
- * and C strings respectively.
- * @param equal_fn comparison function to compare keys. 2 standard ones defined:
- * lh_ptr_hash and lh_char_hash for comparing pointer values
- * and C strings respectively.
- * @return a pointer onto the linkhash table.
- */
-extern struct lh_table* lh_table_new(int size, const char *name,
- lh_entry_free_fn *free_fn,
- lh_hash_fn *hash_fn,
- lh_equal_fn *equal_fn);
-
-/**
- * Convenience function to create a new linkhash
- * table with char keys.
- * @param size initial table size.
- * @param name table name.
- * @param free_fn callback function used to free memory for entries.
- * @return a pointer onto the linkhash table.
- */
-extern struct lh_table* lh_kchar_table_new(int size, const char *name,
- lh_entry_free_fn *free_fn);
-
-
-/**
- * Convenience function to create a new linkhash
- * table with ptr keys.
- * @param size initial table size.
- * @param name table name.
- * @param free_fn callback function used to free memory for entries.
- * @return a pointer onto the linkhash table.
- */
-extern struct lh_table* lh_kptr_table_new(int size, const char *name,
- lh_entry_free_fn *free_fn);
-
-
-/**
- * Free a linkhash table.
- * If a callback free function is provided then it is called for all
- * entries in the table.
- * @param t table to free.
- */
-extern void lh_table_free(struct lh_table *t);
-
-
-/**
- * Insert a record into the table.
- * @param t the table to insert into.
- * @param k a pointer to the key to insert.
- * @param v a pointer to the value to insert.
- */
-extern int lh_table_insert(struct lh_table *t, void *k, const void *v);
-
-
-/**
- * Lookup a record into the table.
- * @param t the table to lookup
- * @param k a pointer to the key to lookup
- * @return a pointer to the record structure of the value or NULL if it does not exist.
- */
-extern struct lh_entry* lh_table_lookup_entry(struct lh_table *t, const void *k);
-
-/**
- * Lookup a record into the table
- * @param t the table to lookup
- * @param k a pointer to the key to lookup
- * @return a pointer to the found value or NULL if it does not exist.
- * @deprecated Use lh_table_lookup_ex instead.
- */
-THIS_FUNCTION_IS_DEPRECATED(extern const void* lh_table_lookup(struct lh_table *t, const void *k));
-
-/**
- * Lookup a record in the table
- * @param t the table to lookup
- * @param k a pointer to the key to lookup
- * @param v a pointer to a where to store the found value (set to NULL if it doesn't exist).
- * @return whether or not the key was found
- */
-extern json_bool lh_table_lookup_ex(struct lh_table *t, const void *k, void **v);
-
-/**
- * Delete a record from the table.
- * If a callback free function is provided then it is called for the
- * for the item being deleted.
- * @param t the table to delete from.
- * @param e a pointer to the entry to delete.
- * @return 0 if the item was deleted.
- * @return -1 if it was not found.
- */
-extern int lh_table_delete_entry(struct lh_table *t, struct lh_entry *e);
-
-
-/**
- * Delete a record from the table.
- * If a callback free function is provided then it is called for the
- * for the item being deleted.
- * @param t the table to delete from.
- * @param k a pointer to the key to delete.
- * @return 0 if the item was deleted.
- * @return -1 if it was not found.
- */
-extern int lh_table_delete(struct lh_table *t, const void *k);
-
-extern int lh_table_length(struct lh_table *t);
-
-void lh_abort(const char *msg, ...);
-void lh_table_resize(struct lh_table *t, int new_size);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/json-c/math_compat.h b/json-c/math_compat.h
deleted file mode 100644
index f40b8faf..00000000
--- a/json-c/math_compat.h
+++ /dev/null
@@ -1,28 +0,0 @@
-#ifndef __math_compat_h
-#define __math_compat_h
-
-/* Define isnan and isinf on Windows/MSVC */
-
-#ifndef HAVE_DECL_ISNAN
-# ifdef HAVE_DECL__ISNAN
-#include <float.h>
-#define isnan(x) _isnan(x)
-# endif
-#endif
-
-#ifndef HAVE_DECL_ISINF
-# ifdef HAVE_DECL__FINITE
-#include <float.h>
-#define isinf(x) (!_finite(x))
-# endif
-#endif
-
-#ifndef HAVE_DECL_NAN
-#error This platform does not have nan()
-#endif
-
-#ifndef HAVE_DECL_INFINITY
-#error This platform does not have INFINITY
-#endif
-
-#endif
diff --git a/json-c/printbuf.c b/json-c/printbuf.c
deleted file mode 100644
index fe952b45..00000000
--- a/json-c/printbuf.c
+++ /dev/null
@@ -1,193 +0,0 @@
-/*
- * $Id: printbuf.c,v 1.5 2006/01/26 02:16:28 mclark Exp $
- *
- * Copyright (c) 2004, 2005 Metaparadigm Pte. Ltd.
- * Michael Clark <michael@metaparadigm.com>
- *
- * This library is free software; you can redistribute it and/or modify
- * it under the terms of the MIT license. See COPYING for details.
- *
- *
- * Copyright (c) 2008-2009 Yahoo! Inc. All rights reserved.
- * The copyrights to the contents of this file are licensed under the MIT License
- * (http://www.opensource.org/licenses/mit-license.php)
- */
-
-#include "config.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#ifdef HAVE_STDARG_H
-# include <stdarg.h>
-#else /* !HAVE_STDARG_H */
-# error Not enough var arg support!
-#endif /* HAVE_STDARG_H */
-
-#include "debug.h"
-#include "printbuf.h"
-
-static int printbuf_extend(struct printbuf *p, int min_size);
-
-struct printbuf* printbuf_new(void)
-{
- struct printbuf *p;
-
- p = (struct printbuf*)calloc(1, sizeof(struct printbuf));
- if(!p) return NULL;
- p->size = 32;
- p->bpos = 0;
- if(!(p->buf = (char*)malloc(p->size))) {
- free(p);
- return NULL;
- }
- return p;
-}
-
-
-/**
- * Extend the buffer p so it has a size of at least min_size.
- *
- * If the current size is large enough, nothing is changed.
- *
- * Note: this does not check the available space! The caller
- * is responsible for performing those calculations.
- */
-static int printbuf_extend(struct printbuf *p, int min_size)
-{
- char *t;
- int new_size;
-
- if (p->size >= min_size)
- return 0;
-
- new_size = p->size * 2;
- if (new_size < min_size + 8)
- new_size = min_size + 8;
-#ifdef PRINTBUF_DEBUG
- MC_DEBUG("printbuf_memappend: realloc "
- "bpos=%d min_size=%d old_size=%d new_size=%d\n",
- p->bpos, min_size, p->size, new_size);
-#endif /* PRINTBUF_DEBUG */
- if(!(t = (char*)realloc(p->buf, new_size)))
- return -1;
- p->size = new_size;
- p->buf = t;
- return 0;
-}
-
-int printbuf_memappend(struct printbuf *p, const char *buf, int size)
-{
- if (p->size <= p->bpos + size + 1) {
- if (printbuf_extend(p, p->bpos + size + 1) < 0)
- return -1;
- }
- memcpy(p->buf + p->bpos, buf, size);
- p->bpos += size;
- p->buf[p->bpos]= '\0';
- return size;
-}
-
-int printbuf_memset(struct printbuf *pb, int offset, int charvalue, int len)
-{
- int size_needed;
-
- if (offset == -1)
- offset = pb->bpos;
- size_needed = offset + len;
- if (pb->size < size_needed)
- {
- if (printbuf_extend(pb, size_needed) < 0)
- return -1;
- }
-
- memset(pb->buf + offset, charvalue, len);
- if (pb->bpos < size_needed)
- pb->bpos = size_needed;
-
- return 0;
-}
-
-#if !defined(HAVE_VSNPRINTF) && defined(_MSC_VER)
-# define vsnprintf _vsnprintf
-#elif !defined(HAVE_VSNPRINTF) /* !HAVE_VSNPRINTF */
-# error Need vsnprintf!
-#endif /* !HAVE_VSNPRINTF && defined(WIN32) */
-
-#if !defined(HAVE_VASPRINTF)
-/* CAW: compliant version of vasprintf */
-static int vasprintf(char **buf, const char *fmt, va_list ap)
-{
-#ifndef WIN32
- static char _T_emptybuffer = '\0';
-#endif /* !defined(WIN32) */
- int chars;
- char *b;
-
- if(!buf) { return -1; }
-
-#ifdef WIN32
- chars = _vscprintf(fmt, ap)+1;
-#else /* !defined(WIN32) */
- /* CAW: RAWR! We have to hope to god here that vsnprintf doesn't overwrite
- our buffer like on some 64bit sun systems.... but hey, its time to move on */
- chars = vsnprintf(&_T_emptybuffer, 0, fmt, ap)+1;
- if(chars < 0) { chars *= -1; } /* CAW: old glibc versions have this problem */
-#endif /* defined(WIN32) */
-
- b = (char*)malloc(sizeof(char)*chars);
- if(!b) { return -1; }
-
- if((chars = vsprintf(b, fmt, ap)) < 0)
- {
- free(b);
- } else {
- *buf = b;
- }
-
- return chars;
-}
-#endif /* !HAVE_VASPRINTF */
-
-int sprintbuf(struct printbuf *p, const char *msg, ...)
-{
- va_list ap;
- char *t;
- int size;
- char buf[128];
-
- /* user stack buffer first */
- va_start(ap, msg);
- size = vsnprintf(buf, 128, msg, ap);
- va_end(ap);
- /* if string is greater than stack buffer, then use dynamic string
- with vasprintf. Note: some implementation of vsnprintf return -1
- if output is truncated whereas some return the number of bytes that
- would have been written - this code handles both cases. */
- if(size == -1 || size > 127) {
- va_start(ap, msg);
- if((size = vasprintf(&t, msg, ap)) < 0) { va_end(ap); return -1; }
- va_end(ap);
- printbuf_memappend(p, t, size);
- free(t);
- return size;
- } else {
- printbuf_memappend(p, buf, size);
- return size;
- }
-}
-
-void printbuf_reset(struct printbuf *p)
-{
- p->buf[0] = '\0';
- p->bpos = 0;
-}
-
-void printbuf_free(struct printbuf *p)
-{
- if(p) {
- free(p->buf);
- free(p);
- }
-}
diff --git a/json-c/printbuf.h b/json-c/printbuf.h
deleted file mode 100644
index b1bde7f9..00000000
--- a/json-c/printbuf.h
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * $Id: printbuf.h,v 1.4 2006/01/26 02:16:28 mclark Exp $
- *
- * Copyright (c) 2004, 2005 Metaparadigm Pte. Ltd.
- * Michael Clark <michael@metaparadigm.com>
- *
- * This library is free software; you can redistribute it and/or modify
- * it under the terms of the MIT license. See COPYING for details.
- *
- *
- * Copyright (c) 2008-2009 Yahoo! Inc. All rights reserved.
- * The copyrights to the contents of this file are licensed under the MIT License
- * (http://www.opensource.org/licenses/mit-license.php)
- */
-
-#ifndef _printbuf_h_
-#define _printbuf_h_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-struct printbuf {
- char *buf;
- int bpos;
- int size;
-};
-
-extern struct printbuf*
-printbuf_new(void);
-
-/* As an optimization, printbuf_memappend_fast is defined as a macro
- * that handles copying data if the buffer is large enough; otherwise
- * it invokes printbuf_memappend_real() which performs the heavy
- * lifting of realloc()ing the buffer and copying data.
- * Your code should not use printbuf_memappend directly--use
- * printbuf_memappend_fast instead.
- */
-extern int
-printbuf_memappend(struct printbuf *p, const char *buf, int size);
-
-#define printbuf_memappend_fast(p, bufptr, bufsize) \
-do { \
- if ((p->size - p->bpos) > bufsize) { \
- memcpy(p->buf + p->bpos, (bufptr), bufsize); \
- p->bpos += bufsize; \
- p->buf[p->bpos]= '\0'; \
- } else { printbuf_memappend(p, (bufptr), bufsize); } \
-} while (0)
-
-#define printbuf_length(p) ((p)->bpos)
-
-/**
- * Set len bytes of the buffer to charvalue, starting at offset offset.
- * Similar to calling memset(x, charvalue, len);
- *
- * The memory allocated for the buffer is extended as necessary.
- *
- * If offset is -1, this starts at the end of the current data in the buffer.
- */
-extern int
-printbuf_memset(struct printbuf *pb, int offset, int charvalue, int len);
-
-extern int
-sprintbuf(struct printbuf *p, const char *msg, ...);
-
-extern void
-printbuf_reset(struct printbuf *p);
-
-extern void
-printbuf_free(struct printbuf *p);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/json-c/random_seed.c b/json-c/random_seed.c
deleted file mode 100644
index f6719298..00000000
--- a/json-c/random_seed.c
+++ /dev/null
@@ -1,237 +0,0 @@
-/*
- * random_seed.c
- *
- * Copyright (c) 2013 Metaparadigm Pte. Ltd.
- * Michael Clark <michael@metaparadigm.com>
- *
- * This library is free software; you can redistribute it and/or modify
- * it under the terms of the MIT license. See COPYING for details.
- *
- */
-
-#include <stdio.h>
-#include "config.h"
-
-#define DEBUG_SEED(s)
-
-
-#if defined ENABLE_RDRAND
-
-/* cpuid */
-
-#if defined __GNUC__ && (defined __i386__ || defined __x86_64__)
-#define HAS_X86_CPUID 1
-
-static void do_cpuid(int regs[], int h)
-{
- __asm__ __volatile__(
-#if defined __x86_64__
- "pushq %%rbx;\n"
-#else
- "pushl %%ebx;\n"
-#endif
- "cpuid;\n"
-#if defined __x86_64__
- "popq %%rbx;\n"
-#else
- "popl %%ebx;\n"
-#endif
- : "=a"(regs[0]), [ebx] "=r"(regs[1]), "=c"(regs[2]), "=d"(regs[3])
- : "a"(h));
-}
-
-#elif defined _MSC_VER
-
-#define HAS_X86_CPUID 1
-#define do_cpuid __cpuid
-
-#endif
-
-/* has_rdrand */
-
-#if HAS_X86_CPUID
-
-static int has_rdrand()
-{
- // CPUID.01H:ECX.RDRAND[bit 30] == 1
- int regs[4];
- do_cpuid(regs, 1);
- return (regs[2] & (1 << 30)) != 0;
-}
-
-#endif
-
-/* get_rdrand_seed - GCC x86 and X64 */
-
-#if defined __GNUC__ && (defined __i386__ || defined __x86_64__)
-
-#define HAVE_RDRAND 1
-
-static int get_rdrand_seed()
-{
- DEBUG_SEED("get_rdrand_seed");
- int _eax;
- // rdrand eax
- __asm__ __volatile__("1: .byte 0x0F\n"
- " .byte 0xC7\n"
- " .byte 0xF0\n"
- " jnc 1b;\n"
- : "=a" (_eax));
- return _eax;
-}
-
-#endif
-
-#if defined _MSC_VER
-
-#if _MSC_VER >= 1700
-#define HAVE_RDRAND 1
-
-/* get_rdrand_seed - Visual Studio 2012 and above */
-
-static int get_rdrand_seed()
-{
- DEBUG_SEED("get_rdrand_seed");
- int r;
- while (_rdrand32_step(&r) == 0);
- return r;
-}
-
-#elif defined _M_IX86
-#define HAVE_RDRAND 1
-
-/* get_rdrand_seed - Visual Studio 2010 and below - x86 only */
-
-static int get_rdrand_seed()
-{
- DEBUG_SEED("get_rdrand_seed");
- int _eax;
-retry:
- // rdrand eax
- __asm _emit 0x0F __asm _emit 0xC7 __asm _emit 0xF0
- __asm jnc retry
- __asm mov _eax, eax
- return _eax;
-}
-
-#endif
-#endif
-
-#endif /* defined ENABLE_RDRAND */
-
-
-/* has_dev_urandom */
-
-#if defined (__APPLE__) || defined(__unix__) || defined(__linux__)
-
-#include <string.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <errno.h>
-#include <stdlib.h>
-#include <sys/stat.h>
-
-#define HAVE_DEV_RANDOM 1
-
-static const char *dev_random_file = "/dev/urandom";
-
-static int has_dev_urandom()
-{
- struct stat buf;
- if (stat(dev_random_file, &buf)) {
- return 0;
- }
- return ((buf.st_mode & S_IFCHR) != 0);
-}
-
-
-/* get_dev_random_seed */
-
-static int get_dev_random_seed()
-{
- DEBUG_SEED("get_dev_random_seed");
-
- int fd = open(dev_random_file, O_RDONLY);
- if (fd < 0) {
- fprintf(stderr, "error opening %s: %s", dev_random_file, strerror(errno));
- exit(1);
- }
-
- int r;
- ssize_t nread = read(fd, &r, sizeof(r));
- if (nread != sizeof(r)) {
- fprintf(stderr, "error short read %s: %s", dev_random_file, strerror(errno));
- exit(1);
- }
-
- close(fd);
- return r;
-}
-
-#endif
-
-
-/* get_cryptgenrandom_seed */
-
-#ifdef WIN32
-
-#define HAVE_CRYPTGENRANDOM 1
-
-#include <windows.h>
-#include <wincrypt.h>
-#ifndef __GNUC__
-#pragma comment(lib, "advapi32.lib")
-#endif
-
-static int get_cryptgenrandom_seed()
-{
- DEBUG_SEED("get_cryptgenrandom_seed");
-
- HCRYPTPROV hProvider = 0;
- int r;
-
- if (!CryptAcquireContextW(&hProvider, 0, 0, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT | CRYPT_SILENT)) {
- fprintf(stderr, "error CryptAcquireContextW");
- exit(1);
- }
-
- if (!CryptGenRandom(hProvider, sizeof(r), (BYTE*)&r)) {
- fprintf(stderr, "error CryptGenRandom");
- exit(1);
- }
-
- CryptReleaseContext(hProvider, 0);
-
- return r;
-}
-
-#endif
-
-
-/* get_time_seed */
-
-#include <time.h>
-
-static int get_time_seed()
-{
- DEBUG_SEED("get_time_seed");
-
- return (int)time(NULL) * 433494437;
-}
-
-
-/* json_c_get_random_seed */
-
-int json_c_get_random_seed()
-{
-#if HAVE_RDRAND
- if (has_rdrand()) return get_rdrand_seed();
-#endif
-#if HAVE_DEV_RANDOM
- if (has_dev_urandom()) return get_dev_random_seed();
-#endif
-#if HAVE_CRYPTGENRANDOM
- return get_cryptgenrandom_seed();
-#endif
- return get_time_seed();
-}
diff --git a/json-c/random_seed.h b/json-c/random_seed.h
deleted file mode 100644
index 7362d67d..00000000
--- a/json-c/random_seed.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * random_seed.h
- *
- * Copyright (c) 2013 Metaparadigm Pte. Ltd.
- * Michael Clark <michael@metaparadigm.com>
- *
- * This library is free software; you can redistribute it and/or modify
- * it under the terms of the MIT license. See COPYING for details.
- *
- */
-
-#ifndef seed_h
-#define seed_h
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-extern int json_c_get_random_seed();
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/manifest.xml b/manifest.xml
index 9adae5bb..c90904cf 100644
--- a/manifest.xml
+++ b/manifest.xml
@@ -140,28 +140,6 @@
</interface>
</hal>
<hal format="hidl">
- <name>android.hardware.media.omx</name>
- <transport>hwbinder</transport>
- <version>1.0</version>
- <interface>
- <name>IOmx</name>
- <instance>default</instance>
- </interface>
- <interface>
- <name>IOmxStore</name>
- <instance>default</instance>
- </interface>
- </hal>
- <hal format="hidl">
- <name>android.hardware.memtrack</name>
- <transport>hwbinder</transport>
- <version>1.0</version>
- <interface>
- <name>IMemtrack</name>
- <instance>default</instance>
- </interface>
- </hal>
- <hal format="hidl">
<name>android.hardware.neuralnetworks</name>
<transport>hwbinder</transport>
<fqname>@1.0::IDevice/paintbox</fqname>
@@ -221,15 +199,6 @@
</interface>
</hal>
<hal format="hidl">
- <name>android.hardware.renderscript</name>
- <transport arch="32+64">passthrough</transport>
- <version>1.0</version>
- <interface>
- <name>IDevice</name>
- <instance>default</instance>
- </interface>
- </hal>
- <hal format="hidl">
<name>android.hardware.sensors</name>
<transport>hwbinder</transport>
<version>2.0</version>
@@ -259,7 +228,7 @@
<hal format="hidl">
<name>android.hardware.tetheroffload.control</name>
<transport>hwbinder</transport>
- <version>1.0</version>
+ <version>1.1</version>
<interface>
<name>IOffloadControl</name>
<instance>default</instance>
diff --git a/media_codecs.xml b/media_codecs.xml
index 97a80b6c..d9f32dfc 100644
--- a/media_codecs.xml
+++ b/media_codecs.xml
@@ -17,7 +17,6 @@
<MediaCodecs>
<Include href="media_codecs_c2.xml" />
- <Include href="media_codecs_omx.xml" />
<Settings>
<Setting name="max-video-encoder-input-buffers" value="11" />
<Domain name="telephony" enabled="true" />
diff --git a/media_codecs_omx.xml b/media_codecs_omx.xml
deleted file mode 100644
index da791c04..00000000
--- a/media_codecs_omx.xml
+++ /dev/null
@@ -1,275 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 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.
--->
-
-<!--
-<!DOCTYPE MediaCodecs [
-<!ELEMENT Include EMPTY>
-<!ATTLIST Include href CDATA #REQUIRED>
-<!ELEMENT MediaCodecs (Decoders|Encoders|Include)*>
-<!ELEMENT Decoders (MediaCodec|Include)*>
-<!ELEMENT Encoders (MediaCodec|Include)*>
-<!ELEMENT MediaCodec (Type|Quirk|Include)*>
-<!ATTLIST MediaCodec name CDATA #REQUIRED>
-<!ATTLIST MediaCodec type CDATA>
-<!ELEMENT Type EMPTY>
-<!ATTLIST Type name CDATA #REQUIRED>
-<!ELEMENT Quirk EMPTY>
-<!ATTLIST Quirk name CDATA #REQUIRED>
-]>
-
-There's a simple and a complex syntax to declare the availability of a
-media codec:
-
-A codec that properly follows the OpenMax spec and therefore doesn't have any
-quirks and that only supports a single content type can be declared like so:
-
- <MediaCodec name="OMX.foo.bar" type="something/interesting" />
-
-If a codec has quirks OR supports multiple content types, the following syntax
-can be used:
-
- <MediaCodec name="OMX.foo.bar" >
- <Type name="something/interesting" />
- <Type name="something/else" />
- ...
- <Quirk name="requires-allocate-on-input-ports" />
- <Quirk name="requires-allocate-on-output-ports" />
- <Quirk name="output-buffers-are-unreadable" />
- </MediaCodec>
-
-Only the three quirks included above are recognized at this point:
-
-"requires-allocate-on-input-ports"
- must be advertised if the component does not properly support specification
- of input buffers using the OMX_UseBuffer(...) API but instead requires
- OMX_AllocateBuffer to be used.
-
-"requires-allocate-on-output-ports"
- must be advertised if the component does not properly support specification
- of output buffers using the OMX_UseBuffer(...) API but instead requires
- OMX_AllocateBuffer to be used.
-
-"output-buffers-are-unreadable"
- must be advertised if the emitted output buffers of a decoder component
- are not readable, i.e. use a custom format even though abusing one of
- the official OMX colorspace constants.
- Clients of such decoders will not be able to access the decoded data,
- naturally making the component much less useful. The only use for
- a component with this quirk is to render the output to the screen.
- Audio decoders MUST NOT advertise this quirk.
- Video decoders that advertise this quirk must be accompanied by a
- corresponding color space converter for thumbnail extraction,
- matching surfaceflinger support that can render the custom format to
- a texture and possibly other code, so just DON'T USE THIS QUIRK.
-
-
--->
-
-<!--
- SDM670 Decoder capabilities
- __________________________________________________________________
- | Codec | W H fps Mbps MB/s | Secure-dec |
- |__________|_________________________________________|____________|
- | h264 | 4096 2160 24 100 829440 | Y |
- | hevc | 4096 2160 60 100 829440 | Y |
- | vp8 | 3840 2160 30 100 979200 | N |
- | vp9 | 4096 2160 24 100 829440 | Y |
- |__________|_________________________________________|____________|
-
-
- SDM670 Encoder capabilities
- ______________________________________________________
- | Codec | W H fps Mbps MB/s |
- |__________|_________________________________________|
- | h264 | 4096 2160 24 100 829440 |
- | hevc | 4096 2160 24 100 829440 |
- | vp8 | 3840 2160 30 100 979200 |
- |__________|_________________________________________|
--->
-
-<Included>
- <Include href="media_codecs_google_audio.xml" />
- <Include href="media_codecs_google_telephony.xml" />
- <Settings>
- <Setting name="max-video-encoder-input-buffers" value="11" />
- </Settings>
- <Decoders>
- <!-- Video Hardware -->
- <MediaCodec name="OMX.qcom.video.decoder.avc" type="video/avc" >
- <Quirk name="requires-allocate-on-input-ports" />
- <Quirk name="requires-allocate-on-output-ports" />
- <Limit name="size" min="96x96" max="4096x2160" />
- <Limit name="alignment" value="2x2" />
- <Limit name="block-size" value="16x16" />
- <Limit name="blocks-per-second" min="24" max="979200" />
- <Limit name="bitrate" range="1-100000000" />
- <Limit name="concurrent-instances" max="16" />
- <Limit name="performance-point-4096x2304" value="56" />
- <Limit name="performance-point-3840x2160" value="60" />
- <Limit name="performance-point-1920x1080" value="240" />
- <Feature name="adaptive-playback" />
- </MediaCodec>
- <MediaCodec name="OMX.qcom.video.decoder.avc.secure" type="video/avc" >
- <Quirk name="requires-allocate-on-input-ports" />
- <Quirk name="requires-allocate-on-output-ports" />
- <Limit name="size" min="96x96" max="4096x2160" />
- <Limit name="alignment" value="2x2" />
- <Limit name="block-size" value="16x16" />
- <Limit name="blocks-per-second" min="24" max="972000" />
- <Limit name="bitrate" range="1-100000000" />
- <Limit name="frame-rate" range="1-30" />
- <Limit name="concurrent-instances" max="6" />
- <Limit name="performance-point-4096x2304" value="56" />
- <Limit name="performance-point-3840x2160" value="60" />
- <Limit name="performance-point-1920x1080" value="240" />
- <Feature name="adaptive-playback" />
- <Feature name="secure-playback" required="true" />
- </MediaCodec>
- <MediaCodec name="OMX.qcom.video.decoder.hevc" type="video/hevc" >
- <Quirk name="requires-allocate-on-input-ports" />
- <Quirk name="requires-allocate-on-output-ports" />
- <Limit name="size" min="96x96" max="4096x2160" />
- <Limit name="alignment" value="2x2" />
- <Limit name="block-size" value="16x16" />
- <Limit name="blocks-per-second" min="1" max="979200" />
- <Limit name="bitrate" range="1-100000000" />
- <Limit name="frame-rate" range="1-240" />
- <Limit name="concurrent-instances" max="16" />
- <Limit name="performance-point-4096x2304" value="56" />
- <Limit name="performance-point-3840x2160" value="60" />
- <Limit name="performance-point-1920x1080" value="240" />
- <Feature name="adaptive-playback" />
- </MediaCodec>
- <MediaCodec name="OMX.qcom.video.decoder.hevc.secure" type="video/hevc" >
- <Quirk name="requires-allocate-on-input-ports" />
- <Quirk name="requires-allocate-on-output-ports" />
- <Limit name="size" min="96x96" max="4096x2160" />
- <Limit name="alignment" value="2x2" />
- <Limit name="block-size" value="16x16" />
- <Limit name="blocks-per-second" min="1" max="972000" />
- <Limit name="bitrate" range="1-100000000" />
- <Limit name="frame-rate" range="1-30" />
- <Limit name="concurrent-instances" max="6" />
- <Limit name="performance-point-4096x2304" value="56" />
- <Limit name="performance-point-3840x2160" value="60" />
- <Limit name="performance-point-1920x1080" value="240" />
- <Feature name="adaptive-playback" />
- <Feature name="secure-playback" required="true" />
- </MediaCodec>
- <MediaCodec name="OMX.qcom.video.decoder.vp8" type="video/x-vnd.on2.vp8" >
- <Quirk name="requires-allocate-on-input-ports" />
- <Quirk name="requires-allocate-on-output-ports" />
- <Limit name="size" min="96x96" max="3840x2160" />
- <Limit name="alignment" value="2x2" />
- <Limit name="block-size" value="16x16" />
- <Limit name="blocks-per-second" min="24" max="979200" />
- <Limit name="bitrate" range="1-20000000" />
- <Limit name="frame-rate" range="1-240" />
- <Limit name="concurrent-instances" max="16" />
- <Limit name="performance-point-4096x2304" value="28" />
- <Limit name="performance-point-3840x2160" value="30" />
- <Limit name="performance-point-1920x1080" value="120" />
- <Limit name="performance-point-1280x720" value="240" />
- <Feature name="adaptive-playback" />
- </MediaCodec>
- <MediaCodec name="OMX.qcom.video.decoder.vp9" type="video/x-vnd.on2.vp9" >
- <Quirk name="requires-allocate-on-input-ports" />
- <Quirk name="requires-allocate-on-output-ports" />
- <Limit name="size" min="96x96" max="3840x2160" />
- <Limit name="alignment" value="2x2" />
- <Limit name="block-size" value="16x16" />
- <Limit name="blocks-per-second" min="24" max="979200" />
- <Limit name="bitrate" range="1-20000000" />
- <Limit name="frame-rate" range="1-240" />
- <Limit name="concurrent-instances" max="6" />
- <Limit name="performance-point-4096x2304" value="56" />
- <Limit name="performance-point-3840x2160" value="60" />
- <Limit name="performance-point-1920x1080" value="240" />
- <Feature name="adaptive-playback" />
- </MediaCodec>
- <MediaCodec name="OMX.qcom.video.decoder.vp9.secure" type="video/x-vnd.on2.vp9" >
- <Quirk name="requires-allocate-on-input-ports" />
- <Quirk name="requires-allocate-on-output-ports" />
- <Limit name="size" min="96x96" max="3840x2160" />
- <Limit name="alignment" value="2x2" />
- <Limit name="block-size" value="16x16" />
- <Limit name="blocks-per-second" min="24" max="979200" />
- <Limit name="bitrate" range="1-20000000" />
- <Limit name="frame-rate" range="1-30" />
- <Limit name="concurrent-instances" max="6" />
- <Limit name="performance-point-4096x2304" value="56" />
- <Limit name="performance-point-3840x2160" value="60" />
- <Limit name="performance-point-1920x1080" value="240" />
- <Feature name="adaptive-playback" />
- <Feature name="secure-playback" required="true" />
- </MediaCodec>
- <!-- Audio Software -->
- </Decoders>
- <Encoders>
- <!-- Audio Hardware -->
- <!-- Audio Software -->
- <!-- Video Hardware -->
- <MediaCodec name="OMX.qcom.video.encoder.avc" type="video/avc" >
- <Quirk name="requires-allocate-on-input-ports" />
- <Quirk name="requires-allocate-on-output-ports" />
- <Quirk name="requires-loaded-to-idle-after-allocation" />
- <Limit name="size" min="96x96" max="4096x2160" />
- <Limit name="alignment" value="2x2" />
- <Limit name="block-size" value="16x16" />
- <Limit name="blocks-per-second" min="24" max="979200" />
- <Limit name="bitrate" range="1-100000000" />
- <Limit name="frame-rate" range="1-240" />
- <Limit name="concurrent-instances" max="16" />
- <Limit name="performance-point-4096x2304" value="56" />
- <Limit name="performance-point-3840x2160" value="60" />
- <Limit name="performance-point-1920x1080" value="240" />
- </MediaCodec>
- <MediaCodec name="OMX.qcom.video.encoder.hevc" type="video/hevc" >
- <Quirk name="requires-allocate-on-input-ports" />
- <Quirk name="requires-allocate-on-output-ports" />
- <Quirk name="requires-loaded-to-idle-after-allocation" />
- <Limit name="size" min="96x96" max="4096x2160" />
- <Limit name="alignment" value="2x2" />
- <Limit name="block-size" value="16x16" />
- <Limit name="blocks-per-second" min="24" max="979200" />
- <Limit name="bitrate" range="1-100000000" />
- <Limit name="frame-rate" range="1-240" />
- <Limit name="concurrent-instances" max="16" />
- <Limit name="quality" range="0-100" default="80" />
- <Limit name="performance-point-4096x2304" value="56" />
- <Limit name="performance-point-3840x2160" value="60" />
- <Limit name="performance-point-1920x1080" value="240" />
- <Feature name="bitrate-modes" value="VBR,CQ" />
- </MediaCodec>
- <MediaCodec name="OMX.qcom.video.encoder.vp8" type="video/x-vnd.on2.vp8" >
- <Quirk name="requires-allocate-on-input-ports" />
- <Quirk name="requires-allocate-on-output-ports" />
- <Quirk name="requires-loaded-to-idle-after-allocation" />
- <Limit name="size" min="96x96" max="3840x2160" />
- <Limit name="alignment" value="2x2" />
- <Limit name="block-size" value="16x16" />
- <Limit name="blocks-per-second" min="24" max="979200" />
- <Limit name="bitrate" range="1-20000000" />
- <Limit name="frame-rate" range="1-240" />
- <Limit name="concurrent-instances" max="16" />
- <Limit name="performance-point-4096x2304" value="28" />
- <Limit name="performance-point-3840x2160" value="30" />
- <Limit name="performance-point-1920x1080" value="120" />
- <Limit name="performance-point-1280x720" value="240" />
- </MediaCodec>
- </Encoders>
- <Include href="media_codecs_google_video.xml" />
-</Included>
diff --git a/media_codecs_performance.xml b/media_codecs_performance.xml
index a50da1a1..38c1f5b9 100644
--- a/media_codecs_performance.xml
+++ b/media_codecs_performance.xml
@@ -19,12 +19,6 @@
<MediaCodec name="c2.android.h263.encoder" type="video/3gpp" update="true">
<Limit name="measured-frame-rate-176x144" range="412-412" /> <!-- N=128 v98%=1.5 -->
</MediaCodec>
- <MediaCodec name="OMX.qcom.video.encoder.avc" type="video/avc" update="true">
- <Limit name="measured-frame-rate-320x240" range="360-360" /> <!-- N=126 v98%=1.5 -->
- <Limit name="measured-frame-rate-720x480" range="159-160" /> <!-- N=128 v98%=1.0 -->
- <Limit name="measured-frame-rate-1280x720" range="62-62" /> <!-- N=124 v98%=1.0 -->
- <Limit name="measured-frame-rate-1920x1080" range="51-51" /> <!-- N=126 v98%=1.1 -->
- </MediaCodec>
<MediaCodec name="c2.android.avc.encoder" type="video/avc" update="true">
<Limit name="measured-frame-rate-320x240" range="256-256" /> <!-- N=128 v98%=1.4 -->
<!-- measured 98%:82-115 med:87 SLOW -->
@@ -38,13 +32,6 @@
<Limit name="measured-frame-rate-1280x720" range="62-62" /> <!-- N=128 v98%=1.0 -->
<Limit name="measured-frame-rate-1920x1080" range="51-51" /> <!-- N=128 v98%=1.1 -->
</MediaCodec>
- <MediaCodec name="OMX.qcom.video.encoder.hevc" type="video/hevc" update="true">
- <Limit name="measured-frame-rate-320x240" range="371-371" /> <!-- N=128 v98%=1.2 -->
- <Limit name="measured-frame-rate-720x480" range="117-118" /> <!-- N=126 v98%=1.0 -->
- <Limit name="measured-frame-rate-1280x720" range="45-45" /> <!-- N=126 v98%=1.0 -->
- <Limit name="measured-frame-rate-1920x1080" range="41-41" /> <!-- N=128 v98%=1.0 -->
- <Limit name="measured-frame-rate-3840x2160" range="20-22" /> <!-- N=110 v98%=1.1 -->
- </MediaCodec>
<MediaCodec name="c2.android.hevc.encoder" type="video/hevc" update="true">
<Limit name="measured-frame-rate-320x240" range="49-49" /> <!-- N=128 v98%=1.0 -->
</MediaCodec>
@@ -58,12 +45,6 @@
<MediaCodec name="c2.android.mpeg4.encoder" type="video/mp4v-es" update="true">
<Limit name="measured-frame-rate-176x144" range="370-396" /> <!-- N=128 v98%=1.5 -->
</MediaCodec>
- <MediaCodec name="OMX.qcom.video.encoder.vp8" type="video/x-vnd.on2.vp8" update="true">
- <Limit name="measured-frame-rate-320x180" range="340-340" /> <!-- N=126 v98%=1.2 -->
- <Limit name="measured-frame-rate-640x360" range="189-189" /> <!-- N=126 v98%=1.0 -->
- <Limit name="measured-frame-rate-1280x720" range="51-51" /> <!-- N=122 v98%=1.0 -->
- <Limit name="measured-frame-rate-1920x1080" range="45-45" /> <!-- N=126 v98%=1.0 -->
- </MediaCodec>
<MediaCodec name="c2.android.vp8.encoder" type="video/x-vnd.on2.vp8" update="true">
<Limit name="measured-frame-rate-320x180" range="275-275" /> <!-- N=128 v98%=1.2 -->
<Limit name="measured-frame-rate-640x360" range="120-120" /> <!-- N=128 v98%=1.1 -->
@@ -82,12 +63,6 @@
<Limit name="measured-frame-rate-176x144" range="736-736" /> <!-- N=104 v98%=1.2 -->
<Limit name="measured-frame-rate-352x288" range="573-573" /> <!-- N=104 v98%=1.1 -->
</MediaCodec>
- <MediaCodec name="OMX.qcom.video.decoder.avc" type="video/avc" update="true">
- <Limit name="measured-frame-rate-320x240" range="488-493" /> <!-- N=132 v98%=1.5 -->
- <Limit name="measured-frame-rate-720x480" range="375-392" /> <!-- N=132 v98%=1.2 -->
- <Limit name="measured-frame-rate-1280x720" range="342-342" /> <!-- N=132 v98%=1.0 -->
- <Limit name="measured-frame-rate-1920x1088" range="175-175" /> <!-- N=132 v98%=1.0 -->
- </MediaCodec>
<MediaCodec name="c2.android.avc.decoder" type="video/avc" update="true">
<Limit name="measured-frame-rate-320x240" range="367-380" /> <!-- N=132 v98%=1.1 -->
<Limit name="measured-frame-rate-768x480" range="97-97" /> <!-- N=132 v98%=1.1 -->
@@ -100,14 +75,6 @@
<Limit name="measured-frame-rate-1280x720" range="338-338" /> <!-- N=132 v98%=1.1 -->
<Limit name="measured-frame-rate-1920x1088" range="175-175" /> <!-- N=132 v98%=1.0 -->
</MediaCodec>
- <MediaCodec name="OMX.qcom.video.decoder.hevc" type="video/hevc" update="true">
- <Limit name="measured-frame-rate-352x288" range="527-527" /> <!-- N=132 v98%=1.6 -->
- <Limit name="measured-frame-rate-640x360" range="453-453" /> <!-- N=132 v98%=1.3 -->
- <Limit name="measured-frame-rate-720x480" range="411-411" /> <!-- N=132 v98%=1.2 -->
- <Limit name="measured-frame-rate-1280x720" range="362-367" /> <!-- N=132 v98%=1.1 -->
- <Limit name="measured-frame-rate-1920x1080" range="209-210" /> <!-- N=132 v98%=1.0 -->
- <Limit name="measured-frame-rate-3840x2160" range="23-23" /> <!-- N=132 v98%=1.1 -->
- </MediaCodec>
<MediaCodec name="c2.android.hevc.decoder" type="video/hevc" update="true">
<Limit name="measured-frame-rate-384x288" range="336-352" /> <!-- N=132 v98%=1.1 -->
<Limit name="measured-frame-rate-640x360" range="201-210" /> <!-- N=132 v98%=1.1 -->
@@ -126,12 +93,6 @@
<MediaCodec name="c2.android.mpeg4.decoder" type="video/mp4v-es" update="true">
<Limit name="measured-frame-rate-176x144" range="388-425" /> <!-- N=132 v93%=1.1 -->
</MediaCodec>
- <MediaCodec name="OMX.qcom.video.decoder.vp8" type="video/x-vnd.on2.vp8" update="true">
- <Limit name="measured-frame-rate-320x192" range="340-368" /> <!-- N=132 v98%=1.1 -->
- <Limit name="measured-frame-rate-640x368" range="340-358" /> <!-- N=132 v95%=1.1 -->
- <Limit name="measured-frame-rate-1280x720" range="340-342" /> <!-- N=132 v98%=1.1 -->
- <Limit name="measured-frame-rate-1920x1088" range="199-199" /> <!-- N=132 v98%=1.0 -->
- </MediaCodec>
<MediaCodec name="c2.android.vp8.decoder" type="video/x-vnd.on2.vp8" update="true">
<Limit name="measured-frame-rate-320x180" range="562-562" /> <!-- N=132 v98%=1.1 -->
<Limit name="measured-frame-rate-640x360" range="256-256" /> <!-- N=132 v98%=1.1 -->
@@ -143,13 +104,6 @@
<Limit name="measured-frame-rate-1280x720" range="337-337" /> <!-- N=132 v98%=1.0 -->
<Limit name="measured-frame-rate-1920x1088" range="199-199" /> <!-- N=132 v98%=1.0 -->
</MediaCodec>
- <MediaCodec name="OMX.qcom.video.decoder.vp9" type="video/x-vnd.on2.vp9" update="true">
- <Limit name="measured-frame-rate-320x184" range="346-377" /> <!-- N=132 v97%=1.1 -->
- <Limit name="measured-frame-rate-640x360" range="350-375" /> <!-- N=132 v95%=1.1 -->
- <Limit name="measured-frame-rate-1280x720" range="336-336" /> <!-- N=132 v98%=1.0 -->
- <Limit name="measured-frame-rate-1920x1080" range="199-200" /> <!-- N=132 v98%=1.0 -->
- <Limit name="measured-frame-rate-3840x2160" range="18-18" /> <!-- N=132 v98%=1.1 -->
- </MediaCodec>
<MediaCodec name="c2.android.vp9.decoder" type="video/x-vnd.on2.vp9" update="true">
<Limit name="measured-frame-rate-320x180" range="483-483" /> <!-- N=132 v98%=1.1 -->
<Limit name="measured-frame-rate-640x360" range="143-144" /> <!-- N=132 v98%=1.1 -->
diff --git a/overlay/packages/apps/Settings/res/values/bools.xml b/overlay/packages/apps/Settings/res/values/bools.xml
index bb937893..bb937893 100755..100644
--- a/overlay/packages/apps/Settings/res/values/bools.xml
+++ b/overlay/packages/apps/Settings/res/values/bools.xml
diff --git a/overlay/packages/apps/Settings/res/values/config.xml b/overlay/packages/apps/Settings/res/values/config.xml
index d8c7f6dc..d8c7f6dc 100755..100644
--- a/overlay/packages/apps/Settings/res/values/config.xml
+++ b/overlay/packages/apps/Settings/res/values/config.xml
diff --git a/sargo/extract-files.py b/sargo/extract-files.py
new file mode 100755
index 00000000..6eaeaaa8
--- /dev/null
+++ b/sargo/extract-files.py
@@ -0,0 +1,96 @@
+#!/usr/bin/env -S PYTHONPATH=../../../../tools/extract-utils python3
+#
+# SPDX-FileCopyrightText: 2024 The LineageOS Project
+# SPDX-License-Identifier: Apache-2.0
+#
+
+from extract_utils.extract import extract_fns_user_type
+from extract_utils.extract_pixel import (
+ extract_pixel_factory_image,
+ extract_pixel_firmware,
+ pixel_factory_image_regex,
+ pixel_firmware_regex,
+)
+from extract_utils.fixups_blob import (
+ blob_fixup,
+ blob_fixups_user_type,
+)
+from extract_utils.fixups_lib import (
+ lib_fixups,
+ lib_fixups_user_type,
+)
+from extract_utils.main import (
+ ExtractUtils,
+ ExtractUtilsModule,
+)
+
+namespace_imports = [
+ 'hardware/google/interfaces',
+ 'hardware/google/pixel',
+ 'hardware/qcom/sdm845',
+ 'hardware/qcom/wlan/legacy',
+]
+
+
+def lib_fixup_vendor_suffix(lib: str, partition: str, *args, **kwargs):
+ return f'{lib}_{partition}' if partition == 'vendor' else None
+
+
+lib_fixups: lib_fixups_user_type = {
+ **lib_fixups,
+ (
+ 'vendor.qti.hardware.tui_comm@1.0',
+ 'vendor.qti.imsrtpservice@3.0',
+ ): lib_fixup_vendor_suffix,
+}
+
+blob_fixups: blob_fixups_user_type = {
+ 'product/etc/sysconfig/nexus.xml': blob_fixup()
+ .regex_replace('qulacomm', 'qualcomm'),
+ (
+ 'vendor/bin/hw/android.hardware.identity@1.0-service.citadel',
+ 'vendor/lib64/android.hardware.identity@1.0-impl.nos.so',
+ ): blob_fixup()
+ .replace_needed('android.hardware.identity-V3-ndk_platform.so', 'android.hardware.identity-V3-ndk.so')
+ .replace_needed('android.hardware.keymaster-V3-ndk_platform.so', 'android.hardware.keymaster-V3-ndk.so'),
+ 'vendor/bin/hw/android.hardware.rebootescrow-service.citadel': blob_fixup()
+ .replace_needed('android.hardware.rebootescrow-V1-ndk_platform.so', 'android.hardware.rebootescrow-V1-ndk.so')
+ .replace_needed('libcrypto.so', 'libcrypto-v33.so')
+ .add_needed('libcrypto_shim.so'),
+ (
+ 'vendor/bin/hw/citadeld',
+ 'vendor/lib64/libnos_citadeld_proxy.so',
+ ): blob_fixup()
+ .replace_needed('android.frameworks.stats-V1-ndk_platform.so', 'android.frameworks.stats-V1-ndk.so')
+ .replace_needed('pixelatoms-cpp.so', 'pixelatoms-cpp-legacy.so'),
+ 'vendor/bin/hw/vendor.qti.media.c2@1.0-service': blob_fixup()
+ .replace_needed('libavservices_minijail_vendor.so', 'libavservices_minijail.so'),
+ 'vendor/lib64/android.hardware.keymaster@4.1-impl.nos.so': blob_fixup()
+ .add_needed('libcrypto_shim.so'),
+ 'vendor/lib64/hw/com.qti.chi.override.so': blob_fixup()
+ .replace_needed('android.hardware.power-V1-ndk_platform.so', 'android.hardware.power-V1-ndk.so'),
+} # fmt: skip
+
+extract_fns: extract_fns_user_type = {
+ pixel_factory_image_regex: extract_pixel_factory_image,
+ pixel_firmware_regex: extract_pixel_firmware,
+}
+
+module = ExtractUtilsModule(
+ 'sargo',
+ 'google',
+ device_rel_path='device/google/bonito/sargo',
+ blob_fixups=blob_fixups,
+ lib_fixups=lib_fixups,
+ namespace_imports=namespace_imports,
+ add_firmware_proprietary_file=True,
+ extract_fns=extract_fns,
+)
+
+module.add_proprietary_file('proprietary-files-carriersettings.txt')
+module.add_proprietary_file('proprietary-files-radio.txt')
+module.add_proprietary_file('proprietary-files-vendor.txt')
+
+if __name__ == '__main__':
+ utils = ExtractUtils.device(module)
+ utils.run()
diff --git a/sargo/extract-files.sh b/sargo/extract-files.sh
deleted file mode 100755
index 26826908..00000000
--- a/sargo/extract-files.sh
+++ /dev/null
@@ -1,86 +0,0 @@
-#!/bin/bash
-#
-# Copyright (C) 2016 The CyanogenMod Project
-# Copyright (C) 2017-2023 The LineageOS Project
-#
-# SPDX-License-Identifier: Apache-2.0
-#
-
-set -e
-
-DEVICE=sargo
-VENDOR=google
-
-# Load extract_utils and do some sanity checks
-MY_DIR="${BASH_SOURCE%/*}"
-if [[ ! -d "${MY_DIR}" ]]; then MY_DIR="${PWD}"; fi
-
-ANDROID_ROOT="${MY_DIR}/../../../.."
-
-HELPER="${ANDROID_ROOT}/tools/extract-utils/extract_utils.sh"
-if [ ! -f "${HELPER}" ]; then
- echo "Unable to find helper script at ${HELPER}"
- exit 1
-fi
-source "${HELPER}"
-
-# Default to sanitizing the vendor folder before extraction
-CLEAN_VENDOR=true
-
-KANG=
-SECTION=
-
-while [ "${#}" -gt 0 ]; do
- case "${1}" in
- -n | --no-cleanup )
- CLEAN_VENDOR=false
- ;;
- -k | --kang )
- KANG="--kang"
- ;;
- -s | --section )
- SECTION="${2}"; shift
- CLEAN_VENDOR=false
- ;;
- * )
- SRC="${1}"
- ;;
- esac
- shift
-done
-
-if [ -z "${SRC}" ]; then
- SRC="adb"
-fi
-
-function blob_fixup() {
- case "${1}" in
- # Fix typo in qcrilmsgtunnel whitelist
- product/etc/sysconfig/nexus.xml)
- sed -i 's/qulacomm/qualcomm/' "${2}"
- ;;
- vendor/bin/hw/android.hardware.rebootescrow-service.citadel)
- "${PATCHELF}" --replace-needed "libcrypto.so" "libcrypto-v33.so" "${2}"
- ;;
- esac
-}
-
-function prepare_firmware() {
- if [ "${SRC}" != "adb" ]; then
- bash "${ANDROID_ROOT}"/lineage/scripts/pixel/prepare-firmware.sh "${DEVICE}" "${SRC}"
- fi
-}
-
-# Initialize the helper
-setup_vendor "${DEVICE}" "${VENDOR}" "${ANDROID_ROOT}" false "${CLEAN_VENDOR}"
-
-extract "${MY_DIR}/proprietary-files.txt" "${SRC}" "${KANG}" --section "${SECTION}"
-extract "${MY_DIR}/proprietary-files-carriersettings.txt" "${SRC}" "${KANG}" --section "${SECTION}"
-extract "${MY_DIR}/proprietary-files-radio.txt" "${SRC}" "${KANG}" --section "${SECTION}"
-extract "${MY_DIR}/proprietary-files-vendor.txt" "${SRC}" "${KANG}" --section "${SECTION}"
-
-if [ -z "${SECTION}" ]; then
- extract_firmware "${MY_DIR}/proprietary-firmware.txt" "${SRC}"
-fi
-
-"${MY_DIR}/setup-makefiles.sh"
diff --git a/sargo/overlay/frameworks/base/core/res/res/values/config.xml b/sargo/overlay/frameworks/base/core/res/res/values/config.xml
index 3f9a0f3f..3f9a0f3f 100755..100644
--- a/sargo/overlay/frameworks/base/core/res/res/values/config.xml
+++ b/sargo/overlay/frameworks/base/core/res/res/values/config.xml
diff --git a/sargo/proprietary-files-radio.txt b/sargo/proprietary-files-radio.txt
index 4060d72b..6f1ed1ea 100644
--- a/sargo/proprietary-files-radio.txt
+++ b/sargo/proprietary-files-radio.txt
@@ -1,9 +1,9 @@
# CNE - from coral - TP1A.221005.002.B2
vendor/app/CneApp/CneApp.apk;REQUIRED=CneApp.libvndfwk_detect_jni.qti_symlink|8c05c492f3673a0e52d86dbd01c144d502fe51f5
vendor/bin/cnd|00c98e93cb936320d90af32a26078e6e97a8c5eb
-vendor/etc/cne/Nexus/ATT/ATT_profiles.xml|a0039cb3a4c5a4ca1adf897904b61c91e32d06f7|33e568627fd3f94dc45bca1c01ad10e6d8fb5b52
-vendor/etc/cne/Nexus/ROW/ROW_profiles.xml|e3907ff71cbbe0f1073ec1bf0223d26c8282aa35|238e785e9674b27c4b2365958d127533d7293132
-vendor/etc/cne/Nexus/VZW/VZW_profiles.xml|0d35b3266ea656d8868ae8f5d7e938f4859e9b0a|0f63b632e3a3f114def7aeadaabd13851c8ceec5
+vendor/etc/cne/Nexus/ATT/ATT_profiles.xml|a0039cb3a4c5a4ca1adf897904b61c91e32d06f7
+vendor/etc/cne/Nexus/ROW/ROW_profiles.xml|e3907ff71cbbe0f1073ec1bf0223d26c8282aa35
+vendor/etc/cne/Nexus/VZW/VZW_profiles.xml|0d35b3266ea656d8868ae8f5d7e938f4859e9b0a
vendor/etc/cne/mwqem.conf|c42ad47b34b511075e5dfb9047d32f881fe0c159
vendor/etc/cne/profileMwqem.xml|947917691684584b7e2ddf3588cd6f8e99f3804f
vendor/etc/cne/wqeclient/ATT/ATT_profile1.xml|578f3f8f56059bfdbef926bcc68d01c15e06951f
@@ -34,29 +34,7 @@ vendor/etc/cne/wqeclient/VZW/VZW_profile4.xml|ff91feb5060a6df07e3e4d9bc99ae58bcc
vendor/etc/cne/wqeclient/VZW/VZW_profile5.xml|f76c894f3c6d5b6ed35113a088dc3174c900501b
vendor/etc/cne/wqeclient/VZW/VZW_profile6.xml|14d136e7fcc682311757d3edc0b9d3eaeba11815
vendor/etc/init/cnd-generic.rc|5ec06d42d32b58bf5c73b77d485606c477d57324
-vendor/lib/libcne.so|d5455fe1491870c2469eb0d5479130aeacd361a7
-vendor/lib/libcneapiclient.so|9366beb21450011bc6c7fb95d985a26da41b7dbb
-vendor/lib/libcneoplookup.so|46789f90f01a6a669a53647e189900712aebad0d
-vendor/lib/libcneqmiutils.so|8b97ff1bb8ab0f2ded483d243d87289de33db72b
-vendor/lib/libwms.so|d7a8df1240b4846a752195bad6b0c493fa42d13f
-vendor/lib/libwqe.so|deec314722d1ebb4d847f2e7983eb92a201bada6
vendor/lib/libxml.so|b453fbd6fcaae2d13f51a8838cf975de8d562e20
-vendor/lib/vendor.qti.data.factory@2.0.so|cc920d710a51ec5638acec13bfcf3faff8cb8fdf
-vendor/lib/vendor.qti.data.factory@2.1.so|32ecdbebbce71746a244c7a3e70decbab819ee87
-vendor/lib/vendor.qti.data.factory@2.2.so|bf46ecfff10609dc22aed0da0414fc8d3fe230bf
-vendor/lib/vendor.qti.data.factory@2.3.so|66659e5ff8ffa4f0ccdc64a588e1fee036d5a663
-vendor/lib/vendor.qti.data.mwqem@1.0.so|a4953eaf4fd719e8eb7b44e9042976cbedc70ee6
-vendor/lib/vendor.qti.data.slm@1.0.so|b3f16e4d8a1ba347f1ff6033228be2c49de55953
-vendor/lib/vendor.qti.hardware.data.cne.internal.api@1.0.so|18647099b9e71aabbbb21636540cabfa1fc9426d
-vendor/lib/vendor.qti.hardware.data.cne.internal.constants@1.0.so|fedc651cf3ad3c4bc084d359404d7113e6866336
-vendor/lib/vendor.qti.hardware.data.cne.internal.server@1.0.so|4c310a92f8ae1dbec77ad5d000c31671a6dd6c37
-vendor/lib/vendor.qti.hardware.data.connection@1.0.so|f908c9a9b0de8696fb9c6f9dea1a49bbe444114c
-vendor/lib/vendor.qti.hardware.data.dynamicdds@1.0.so|a30ac71448d8712d8c69b884a8a9a0dea17d44ff
-vendor/lib/vendor.qti.hardware.data.latency@1.0.so|b6b66d2201a807ca15d90efc3404e7cd4d4a76a1
-vendor/lib/vendor.qti.hardware.data.lce@1.0.so|1227a2b1ac3c8adca5ca79eeb46f78af34043614
-vendor/lib/vendor.qti.hardware.data.qmi@1.0.so|4d6f1bea9ae5e97f7e456fc7946f913917dbd66c
-vendor/lib/vendor.qti.hardware.mwqemadapter@1.0.so|99048bc4f2aef592096d23d6098def735c3a5ca4
-vendor/lib/vendor.qti.hardware.slmadapter@1.0.so|e75b017e2e1f75821496bfec235eb400d6ecc3cc
vendor/lib64/libcne.so|1eb5ae1fdd51f05e25d38afd8a793d8adb0ed1cf
vendor/lib64/libcneapiclient.so|a3bd1e0e85f0684fe6c999f5dc17ffdbc14e8f24
vendor/lib64/libcneoplookup.so|573229322afd00b1bfb553f0eef72ce4e2c99ff4
@@ -108,38 +86,6 @@ vendor/etc/init/imsdatadaemon.rc|68e9a06b92817be8c59c3e2b00d95f5a7fa97a1b
vendor/etc/init/imsqmidaemon.rc|b0b9f70b5c56c89769255ea03d8e3f5050c08657
vendor/etc/init/imsrcsd.rc|a12f5a8efbfccf9a8ec47a39367382346eb8dc35
vendor/etc/seccomp_policy/imsrtp.policy|fb5f1f63dbc3a002ac0f203cce3b8d3434752fa2
-vendor/lib/com.qualcomm.qti.imscmservice@1.0.so|0395ecc6a78444be3cc585845f91cbcda55875f8
-vendor/lib/com.qualcomm.qti.imscmservice@2.0.so|b9dc935adf82410134d63406c4574567902b022e
-vendor/lib/com.qualcomm.qti.imscmservice@2.1.so|9dbeb7a9a115a1b91bb0f954070b2e2353076d72
-vendor/lib/com.qualcomm.qti.imscmservice@2.2.so|dce9d40f3bb4ced209019348cdde92a7d6f76519
-vendor/lib/com.qualcomm.qti.uceservice@2.0.so|7b7914430aece9acd88d3b8fb83d7838cf5d914b
-vendor/lib/com.qualcomm.qti.uceservice@2.1.so|b29e2c7292e020863b09991e88368b1aa375b1dc
-vendor/lib/com.qualcomm.qti.uceservice@2.2.so|870f9b16df935aab7c4a9b9c6194258f75c331c1
-vendor/lib/com.qualcomm.qti.uceservice@2.3.so|19e48d852e08785d6468fdae021d53da53977d3c
-vendor/lib/lib-imscmservice.so|38f5e8d9128c5a0eb425c19f867c324704563e30
-vendor/lib/lib-imsdpl.so|03a7b299db808ab81347cd7566b7ea9cd63f8d6a
-vendor/lib/lib-imsqimf.so|d4e1d33a87cc7b745642ac4b4fe36328fbdbe7aa
-vendor/lib/lib-imsrcs-v2.so|571999f88559ec6e75c1f6d0e18fcc0b28090143
-vendor/lib/lib-imsrcsbaseimpl.so|c98f6838658ca8bcfecf9a77dbf36ebed0d6f2a4
-vendor/lib/lib-imsvtcore.so|108575c6ad012c1e38a4100051041f920e883525
-vendor/lib/lib-imsxml.so|82219d37c0c7c77dbbad743ec15b992663c02b2b
-vendor/lib/lib-rcsconfig.so|13783a699f7e192e89b1b40fa5b1bdc19958ad0c
-vendor/lib/lib-rtpcommon.so|83d1c3a2d0a9a096742f0ae55ef77c18359e90f0
-vendor/lib/lib-rtpcore.so|59c05d07ab9fea55fb535a05ed5ca0f1bf429c7d
-vendor/lib/lib-rtpsl.so|de204d26ebfe21f640769dee9da74ea300130464
-vendor/lib/lib-siputility.so|0cd56a4a2c62c36b540ca644fe5bf006864a9b1a
-vendor/lib/lib-uceservice.so|93573179e5e62d0091eeb241c5891368145b35a1
-vendor/lib/librcc.so|2a98fdb6200b6d322e6aab0db07bb2c3874e2b7f
-vendor/lib/vendor.qti.ims.callcapability@1.0.so|6a2b8dcbb6c565c226853d322fe9b81f0dc5e8e4
-vendor/lib/vendor.qti.ims.callinfo@1.0.so|b77c30854532562d1368c02d23538edbe4a13a55
-vendor/lib/vendor.qti.ims.factory@1.0.so|6d196d5861b2a8b2abdba3df6dd7d2d3591dc5e6
-vendor/lib/vendor.qti.ims.factory@1.1.so|bc5ff74b8cb1ff76706b12072d29bb1a10cbcae5
-vendor/lib/vendor.qti.ims.rcsconfig@1.0.so|b2072e058696c248f59184ef4e2290d7d4b0d7e2
-vendor/lib/vendor.qti.ims.rcsconfig@1.1.so|c98e14a382990a88f0f946ca0c1340b83f7a2431
-vendor/lib/vendor.qti.ims.rcsconfig@2.0.so|1f5916daa9201c9ca6ae51452ebe9e28ae7e4576
-vendor/lib/vendor.qti.ims.rcsconfig@2.1.so|2fd70cf484b42c607b74175c3d9b9f4d93d81f10
-vendor/lib/vendor.qti.imsrtpservice@3.0-service-Impl.so|8d91a21a4fb1ed8323159af610fda78a752a3ed4
-vendor/lib/vendor.qti.imsrtpservice@3.0.so|ac0a1374a03cd01875ae7fac9eb26461349110f6
vendor/lib64/com.qualcomm.qti.imscmservice@1.0.so|c81670607cd83e49ef7799c33ee8d6671ddc1d2d
vendor/lib64/com.qualcomm.qti.imscmservice@2.0.so|5cc27542fa649723d0ade59a09f645c7d24b8218
vendor/lib64/com.qualcomm.qti.imscmservice@2.1.so|6e0037052bd4c8f607106c7b6ce7397fd2ef3430
@@ -184,7 +130,7 @@ vendor/lib64/vendor.qti.ims.rcsconfig@1.1.so|6b0a93fea15929f446c0819fc5411268b09
vendor/lib64/vendor.qti.ims.rcsconfig@2.0.so|edde36e3eaf91a7c26e378dc17c312b99e2cc65b
vendor/lib64/vendor.qti.ims.rcsconfig@2.1.so|dfe17b80d07b431615c35cbd3403f0c0c9455c6f
vendor/lib64/vendor.qti.imsrtpservice@3.0-service-Impl.so|29c39c454cd7c11368db5c480d151e0487f4e0ea
-vendor/lib64/vendor.qti.imsrtpservice@3.0.so|91cc47edc34172234d56156e7e69fa5b4871dd21
+vendor/lib64/vendor.qti.imsrtpservice@3.0.so;MODULE_SUFFIX=_vendor|91cc47edc34172234d56156e7e69fa5b4871dd21
# QMI - from coral - TP1A.221005.002.B2
vendor/bin/irsc_util|f194faebe803843eb855a72e172367e02dc49ecd
diff --git a/sargo/proprietary-files-vendor.txt b/sargo/proprietary-files-vendor.txt
index 6aaf1a4c..8e25830b 100644
--- a/sargo/proprietary-files-vendor.txt
+++ b/sargo/proprietary-files-vendor.txt
@@ -1,4 +1,5 @@
# All blobs are extracted from Google factory images for each new ASB
+
vendor/app/TimeService/TimeService.apk
vendor/bin/adsprpcd
vendor/bin/cdsprpcd
@@ -351,14 +352,6 @@ vendor/firmware/wlanmdsp.mbn
vendor/framework/com.google.android.camera.experimental2018.jar
vendor/lib/android.hardware.sensors@2.0-impl.so
vendor/lib/btaudio_offload_if.so
-vendor/lib/camera/com.qti.sensormodule.metric_imx363.bin
-vendor/lib/camera/com.qti.sensormodule.primax_imx355.bin
-vendor/lib/camera/com.qti.sensormodule.primax_imx355_s.bin
-vendor/lib/camera/com.qti.tuned.default.bin
-vendor/lib/camera/fdconfigpreview.bin
-vendor/lib/camera/fdconfigpreviewlite.bin
-vendor/lib/camera/fdconfigvideo.bin
-vendor/lib/camera/fdconfigvideolite.bin
vendor/lib/egl/eglSubDriverAndroid.so
vendor/lib/egl/libEGL_adreno.so;SYMLINK=vendor/lib/libEGL_adreno.so
vendor/lib/egl/libGLESv1_CM_adreno.so
@@ -371,28 +364,16 @@ vendor/lib/hw/android.hardware.gatekeeper@1.0-impl-qti.so
vendor/lib/hw/sound_trigger.primary.sdm710.so
vendor/lib/hw/vendor.qti.hardware.qteeconnector@1.0-impl.so
vendor/lib/hw/vulkan.adreno.so
-vendor/lib/lib-dplmedia.so
-vendor/lib/libAlacSwDec.so
-vendor/lib/libApeSwDec.so
vendor/lib/libC2D2.so
vendor/lib/libCB.so
-vendor/lib/libFlacSwDec.so
vendor/lib/libGPQTEEC_vendor.so
vendor/lib/libGPTEE_vendor.so
vendor/lib/libGPreqcancel.so
vendor/lib/libGPreqcancel_svc.so
--vendor/lib/libMpeg4SwEncoder.so
-vendor/lib/libOmxAlacDecSw.so
-vendor/lib/libOmxAmrwbplusDec.so
-vendor/lib/libOmxApeDecSw.so
-vendor/lib/libOmxDsdDec.so
-vendor/lib/libOmxEvrcDec.so
-vendor/lib/libOmxQcelp13Dec.so
vendor/lib/libOpenCL-pixel.so
vendor/lib/libOpenCL.so
vendor/lib/libQSEEComAPI.so
vendor/lib/libQTEEConnector_vendor.so
-vendor/lib/libRSDriver_adreno.so
vendor/lib/libSecureUILib.so
vendor/lib/libStDrvInt.so
vendor/lib/libSubSystemShutdown.so
@@ -406,14 +387,14 @@ vendor/lib/libadm.so
vendor/lib/libadpcmdec.so
vendor/lib/libadreno_utils.so
vendor/lib/libadsp_default_listener.so
--vendor/lib/libadsprpc.so
+vendor/lib/libadsprpc.so
vendor/lib/libash.so
vendor/lib/libaudcal.so
vendor/lib/libaudioalsa.so
vendor/lib/libbase64.so
vendor/lib/libbccQTI.so
vendor/lib/libbluetooth_audio_session_qti.so
--vendor/lib/libbtnv.so
+vendor/lib/libbtnv.so
vendor/lib/libc2d30_bltlib.so
vendor/lib/libcamxfdalgov7.so
vendor/lib/libcamxfdengine.so
@@ -429,7 +410,6 @@ vendor/lib/libdisp-aba.so
vendor/lib/libdisplayqos.so
vendor/lib/libdrmfs.so
vendor/lib/libdrmtime.so
-vendor/lib/libdsd2pcm.so
vendor/lib/libeaselmanager_client.so
vendor/lib/libelmyra-protos.so
vendor/lib/libfastcrc.so
@@ -470,10 +450,7 @@ vendor/lib/libqisl.so
vendor/lib/libqseed3.so
vendor/lib/libqti-utils.so
vendor/lib/libqtikeymaster4.so
-vendor/lib/libquipc_os_api.so
vendor/lib/librpmb.so
-vendor/lib/librs_adreno.so
-vendor/lib/librs_adreno_sha1.so
vendor/lib/libsdedrm.so
vendor/lib/libsdm-color.so
vendor/lib/libsdm-diag.so
@@ -535,7 +512,7 @@ vendor/lib/vendor.qti.hardware.qteeconnector@1.0.so
vendor/lib/vendor.qti.hardware.scve.objecttracker@1.0.so
vendor/lib/vendor.qti.hardware.scve.panorama@1.0.so
vendor/lib/vendor.qti.hardware.soter@1.0.so
-vendor/lib/vendor.qti.hardware.tui_comm@1.0.so
+vendor/lib/vendor.qti.hardware.tui_comm@1.0.so;MODULE_SUFFIX=_vendor
vendor/lib/vendor.qti.hardware.wigig.netperftuner@1.0.so
vendor/lib/vendor.qti.power.pasrmanager@1.0.so
vendor/lib/vendor.qti.voiceprint@1.0.so
@@ -603,11 +580,11 @@ vendor/lib64/camera/fdconfigvideo.bin
vendor/lib64/camera/fdconfigvideolite.bin
vendor/lib64/com.fingerprints.extension@1.0.so
vendor/lib64/egl/eglSubDriverAndroid.so
-vendor/lib64/egl/libEGL_adreno.so;SYMLINK=vendor/lib/libEGL_adreno.so
+vendor/lib64/egl/libEGL_adreno.so;SYMLINK=vendor/lib64/libEGL_adreno.so
vendor/lib64/egl/libGLESv1_CM_adreno.so
-vendor/lib64/egl/libGLESv2_adreno.so;SYMLINK=vendor/lib/libGLESv2_adreno.so
+vendor/lib64/egl/libGLESv2_adreno.so;SYMLINK=vendor/lib64/libGLESv2_adreno.so
vendor/lib64/egl/libQTapGLES.so
-vendor/lib64/egl/libq3dtools_adreno.so;SYMLINK=vendor/lib/libq3dtools_adreno.so
+vendor/lib64/egl/libq3dtools_adreno.so;SYMLINK=vendor/lib64/libq3dtools_adreno.so
vendor/lib64/egl/libq3dtools_esx.so
vendor/lib64/hw/android.hardware.bluetooth@1.0-impl-qti.so
vendor/lib64/hw/android.hardware.gatekeeper@1.0-impl-qti.so
@@ -616,27 +593,16 @@ vendor/lib64/hw/com.qti.chi.override.so
vendor/lib64/hw/sound_trigger.primary.sdm710.so
vendor/lib64/hw/vendor.qti.hardware.qteeconnector@1.0-impl.so
vendor/lib64/hw/vulkan.adreno.so
-vendor/lib64/lib-dplmedia.so
-vendor/lib64/libAlacSwDec.so
-vendor/lib64/libApeSwDec.so
vendor/lib64/libC2D2.so
vendor/lib64/libCB.so
-vendor/lib64/libFlacSwDec.so
vendor/lib64/libGPQTEEC_vendor.so
vendor/lib64/libGPTEE_vendor.so
vendor/lib64/libGPreqcancel.so
vendor/lib64/libGPreqcancel_svc.so
--vendor/lib64/libMpeg4SwEncoder.so
-vendor/lib64/libOmxAlacDecSw.so
-vendor/lib64/libOmxAmrwbplusDec.so
-vendor/lib64/libOmxApeDecSw.so
-vendor/lib64/libOmxEvrcDec.so
-vendor/lib64/libOmxQcelp13Dec.so
vendor/lib64/libOpenCL-pixel.so
vendor/lib64/libOpenCL.so
vendor/lib64/libQSEEComAPI.so
vendor/lib64/libQTEEConnector_vendor.so
-vendor/lib64/libRSDriver_adreno.so
vendor/lib64/libSecureUILib.so
vendor/lib64/libStDrvInt.so
vendor/lib64/libSubSystemShutdown.so
@@ -648,14 +614,14 @@ vendor/lib64/libacdbrtac.so
vendor/lib64/libadiertac.so
vendor/lib64/libadreno_utils.so
vendor/lib64/libadsp_default_listener.so
--vendor/lib64/libadsprpc.so
+vendor/lib64/libadsprpc.so
vendor/lib64/libash.so
vendor/lib64/libaudcal.so
vendor/lib64/libaudioalsa.so
vendor/lib64/libbase64.so
vendor/lib64/libbccQTI.so
vendor/lib64/libbluetooth_audio_session_qti.so
--vendor/lib64/libbtnv.so
+vendor/lib64/libbtnv.so
vendor/lib64/libc2d30_bltlib.so
vendor/lib64/libcamxfdalgov7.so
vendor/lib64/libcamxfdengine.so
@@ -715,7 +681,6 @@ vendor/lib64/libnos_transport.so
vendor/lib64/libnosprotos.so
vendor/lib64/liboemcrypto.so
vendor/lib64/libperipheral_client.so
-vendor/lib64/libpixelstats.so
vendor/lib64/libpower_anomaly_data.so
vendor/lib64/libqcbor.so
vendor/lib64/libqcodec2.so
@@ -723,10 +688,7 @@ vendor/lib64/libqisl.so
vendor/lib64/libqseed3.so
vendor/lib64/libqti-utils.so
vendor/lib64/libqtikeymaster4.so
-vendor/lib64/libquipc_os_api.so
vendor/lib64/librpmb.so
-vendor/lib64/librs_adreno.so
-vendor/lib64/librs_adreno_sha1.so
vendor/lib64/libsdedrm.so
vendor/lib64/libsdm-color.so
vendor/lib64/libsdm-diag.so
@@ -761,7 +723,7 @@ vendor/lib64/nos_app_avb.so
vendor/lib64/nos_app_identity.so
vendor/lib64/nos_app_keymaster.so
vendor/lib64/nos_app_weaver.so
-vendor/lib64/pixelatoms-cpp.so
+vendor/lib64/pixelatoms-cpp.so:vendor/lib64/pixelatoms-cpp-legacy.so;FIX_SONAME
vendor/lib64/sensors.ssc.so
vendor/lib64/unnhal-acc-adreno.so
vendor/lib64/unnhal-acc-common.so
@@ -780,7 +742,7 @@ vendor/lib64/vendor.qti.hardware.qteeconnector@1.0.so
vendor/lib64/vendor.qti.hardware.scve.objecttracker@1.0.so
vendor/lib64/vendor.qti.hardware.scve.panorama@1.0.so
vendor/lib64/vendor.qti.hardware.soter@1.0.so
-vendor/lib64/vendor.qti.hardware.tui_comm@1.0.so
+vendor/lib64/vendor.qti.hardware.tui_comm@1.0.so;MODULE_SUFFIX=_vendor
vendor/lib64/vendor.qti.hardware.wigig.netperftuner@1.0.so
vendor/lib64/vendor.qti.power.pasrmanager@1.0.so
vendor/lib64/vendor.qti.voiceprint@1.0.so
diff --git a/sargo/proprietary-files.txt b/sargo/proprietary-files.txt
index 144366e3..55b04b0e 100644
--- a/sargo/proprietary-files.txt
+++ b/sargo/proprietary-files.txt
@@ -114,12 +114,3 @@ system_ext/etc/permissions/vzw_mvs_permissions.xml
system_ext/priv-app/MyVerizonServices/MyVerizonServices.apk;PRESIGNED
system_ext/priv-app/OBDM_Permissions/OBDM_Permissions.apk;PRESIGNED
system_ext/priv-app/obdm_stub/obdm_stub.apk;PRESIGNED
-
-# vendor partition
-
-# Wi-Fi service
-vendor/bin/hw/vendor.google.wifi_ext-service-vendor|2f00a17b75612cbf8fb3685fe0d183148a70dd03
-vendor/etc/init/vendor.google.wifi_ext-service.rc|8565ca57da131819441d6fb87abfcae134ed2ef9
-vendor/etc/vintf/manifest/manifest_wifi_ext_aidl.xml|f273a6ab68268f73935c36bdecea0aad97cbe70f
-vendor/lib64/google_wifi_firmware_config_info_cc_proto.so|b290b5ba92c6b505d2314e75d8c7269a1cc03942
-vendor/lib64/vendor.google.wifi_ext-V3-ndk.so|9fcddf2e1eab7978f6c57270170b3f4a9aea04b8
diff --git a/sargo/regen-carriersettings.sh b/sargo/regen-carriersettings.sh
deleted file mode 100755
index df7335bc..00000000
--- a/sargo/regen-carriersettings.sh
+++ /dev/null
@@ -1,47 +0,0 @@
-#!/bin/bash
-#
-# Copyright (C) 2019-2023 The LineageOS Project
-#
-# SPDX-License-Identifier: Apache-2.0
-#
-
-set -e
-
-# Load extract_utils and do some sanity checks
-MY_DIR="${BASH_SOURCE%/*}"
-if [[ ! -d "${MY_DIR}" ]]; then MY_DIR="${PWD}"; fi
-
-ANDROID_ROOT="${MY_DIR}/../../../.."
-
-HELPER="${ANDROID_ROOT}/tools/extract-utils/extract_utils.sh"
-if [ ! -f "${HELPER}" ]; then
- echo "Unable to find helper script at ${HELPER}"
- exit 1
-fi
-source "${HELPER}"
-
-_input_image="${1}"
-_output_file="${2}"
-
-if [ -z "${_input_image}" ]; then
- echo "No input image supplied"
- exit 1
-fi
-
-if [ -z "${_output_file}" ]; then
- echo "No output filename supplied"
- exit 1
-fi
-
-CARRIER_SKIP_FILES=()
-
-# Initialize the helper
-setup_vendor_deps "${ANDROID_ROOT}"
-
-generate_prop_list_from_image "${_input_image}" "${_output_file}" CARRIER_SKIP_FILES carriersettings
-
-function header() {
- sed -i "1s/^/${1}\n/" "${_output_file}"
-}
-
-header "# All blobs are extracted from Google factory images for each new ASB"
diff --git a/sargo/regen-vendor.sh b/sargo/regen-vendor.sh
deleted file mode 100755
index d88b67ab..00000000
--- a/sargo/regen-vendor.sh
+++ /dev/null
@@ -1,1395 +0,0 @@
-#!/bin/bash
-#
-# Copyright (C) 2019-2021 The LineageOS Project
-#
-# SPDX-License-Identifier: Apache-2.0
-#
-
-set -e
-
-# Load extract_utils and do some sanity checks
-MY_DIR="${BASH_SOURCE%/*}"
-if [[ ! -d "${MY_DIR}" ]]; then MY_DIR="${PWD}"; fi
-
-ANDROID_ROOT="${MY_DIR}/../../../.."
-
-HELPER="${ANDROID_ROOT}/tools/extract-utils/extract_utils.sh"
-if [ ! -f "${HELPER}" ]; then
- echo "Unable to find helper script at ${HELPER}"
- exit 1
-fi
-source "${HELPER}"
-
-_input_image="${1}"
-_output_file="${2}"
-
-if [ -z "${_input_image}" ]; then
- echo "No input image supplied"
- exit 1
-fi
-
-if [ -z "${_output_file}" ]; then
- echo "No output filename supplied"
- exit 1
-fi
-
-VENDOR_SKIP_FILES=(
- # Standard build output with vendor image build enabled
- "apex/com.android.vibrator.drv2624.apex"
- "bin/["
- "bin/acpi"
- "bin/applypatch"
- "bin/awk"
- "bin/base64"
- "bin/basename"
- "bin/blockdev"
- "bin/boringssl_self_test32"
- "bin/boringssl_self_test64"
- "bin/cal"
- "bin/cat"
- "bin/chattr"
- "bin/chcon"
- "bin/checkpoint_gc"
- "bin/chgrp"
- "bin/chmod"
- "bin/chown"
- "bin/chroot"
- "bin/chrt"
- "bin/cksum"
- "bin/clear"
- "bin/cmp"
- "bin/comm"
- "bin/cp"
- "bin/cpio"
- "bin/cut"
- "bin/date"
- "bin/dd"
- "bin/devmem"
- "bin/df"
- "bin/diff"
- "bin/dirname"
- "bin/dmesg"
- "bin/dos2unix"
- "bin/du"
- "bin/dumpsys"
- "bin/echo"
- "bin/egrep"
- "bin/env"
- "bin/expand"
- "bin/expr"
- "bin/fallocate"
- "bin/false"
- "bin/fgrep"
- "bin/file"
- "bin/find"
- "bin/flock"
- "bin/fmt"
- "bin/free"
- "bin/fsync"
- "bin/getconf"
- "bin/getenforce"
- "bin/getevent"
- "bin/getprop"
- "bin/grep"
- "bin/groups"
- "bin/gunzip"
- "bin/gzip"
- "bin/head"
- "bin/hostname"
- "bin/hw/android.hardware.atrace@1.0-service.pixel"
- "bin/hw/android.hardware.audio.service"
- "bin/hw/android.hardware.boot@1.0-service"
- "bin/hw/android.hardware.camera.provider@2.4-service_64"
- "bin/hw/android.hardware.cas@1.2-service"
- "bin/hw/android.hardware.configstore@1.1-service"
- "bin/hw/android.hardware.contexthub@1.2-service.generic"
- "bin/hw/android.hardware.drm@1.0-service"
- "bin/hw/android.hardware.drm@1.4-service.clearkey"
- "bin/hw/android.hardware.dumpstate@1.1-service.bonito"
- "bin/hw/android.hardware.gnss@1.1-service-qti"
- "bin/hw/android.hardware.graphics.composer@2.2-service"
- "bin/hw/android.hardware.health.storage@1.0-service"
- "bin/hw/android.hardware.health@2.0-service.bonito"
- "bin/hw/android.hardware.light@2.0-service"
- "bin/hw/android.hardware.media.omx@1.0-service"
- "bin/hw/android.hardware.memtrack@1.0-service"
- "bin/hw/android.hardware.nfc@1.2-service"
- "bin/hw/android.hardware.power-service.pixel-libperfmgr"
- "bin/hw/android.hardware.power.stats@1.0-service.pixel"
- "bin/hw/android.hardware.secure_element@1.1-service-disabled"
- "bin/hw/android.hardware.thermal@2.0-service.pixel"
- "bin/hw/android.hardware.usb@1.3-service.bonito"
- "bin/hw/android.hardware.wifi@1.0-service"
- "bin/hw/hostapd"
- "bin/hw/wait_for_strongbox"
- "bin/hw/wpa_supplicant"
- "bin/hwclock"
- "bin/i2cdetect"
- "bin/i2cdump"
- "bin/i2cget"
- "bin/i2cset"
- "bin/iconv"
- "bin/id"
- "bin/ifconfig"
- "bin/init.edge_sense.sh"
- "bin/init.fingerprint.sh"
- "bin/init.firstboot.sh"
- "bin/init.insmod.sh"
- "bin/init.qcom.devstart.sh"
- "bin/init.qcom.ipastart.sh"
- "bin/init.qcom.wlan.sh"
- "bin/init.radio.sh"
- "bin/init.ramoops.sh"
- "bin/inotifyd"
- "bin/insmod"
- "bin/install"
- "bin/ionice"
- "bin/iorenice"
- "bin/ipacm"
- "bin/kill"
- "bin/killall"
- "bin/ln"
- "bin/load_policy"
- "bin/log"
- "bin/logname"
- "bin/logwrapper"
- "bin/losetup"
- "bin/ls"
- "bin/lsattr"
- "bin/lsmod"
- "bin/lsof"
- "bin/lspci"
- "bin/lsusb"
- "bin/md5sum"
- "bin/microcom"
- "bin/misc_writer"
- "bin/mkdir"
- "bin/mkfifo"
- "bin/mknod"
- "bin/mkswap"
- "bin/mktemp"
- "bin/modinfo"
- "bin/modprobe"
- "bin/more"
- "bin/mount"
- "bin/mountpoint"
- "bin/mv"
- "bin/nc"
- "bin/netcat"
- "bin/netstat"
- "bin/nice"
- "bin/nl"
- "bin/nohup"
- "bin/nproc"
- "bin/nsenter"
- "bin/od"
- "bin/paste"
- "bin/patch"
- "bin/pgrep"
- "bin/pidof"
- "bin/pixelstats-vendor"
- "bin/pkill"
- "bin/pmap"
- "bin/printenv"
- "bin/printf"
- "bin/ps"
- "bin/pwd"
- "bin/readelf"
- "bin/readlink"
- "bin/realpath"
- "bin/renice"
- "bin/restorecon"
- "bin/rm"
- "bin/rmdir"
- "bin/rmmod"
- "bin/rtcwake"
- "bin/runcon"
- "bin/sed"
- "bin/sendevent"
- "bin/seq"
- "bin/setenforce"
- "bin/setprop"
- "bin/setsid"
- "bin/sh"
- "bin/sha1sum"
- "bin/sha224sum"
- "bin/sha256sum"
- "bin/sha384sum"
- "bin/sha512sum"
- "bin/sleep"
- "bin/sort"
- "bin/split"
- "bin/start"
- "bin/stat"
- "bin/stop"
- "bin/strings"
- "bin/stty"
- "bin/swapoff"
- "bin/swapon"
- "bin/sync"
- "bin/sysctl"
- "bin/tac"
- "bin/tail"
- "bin/tar"
- "bin/taskset"
- "bin/tee"
- "bin/test"
- "bin/thermal_symlinks"
- "bin/time"
- "bin/timeout"
- "bin/toolbox"
- "bin/top"
- "bin/touch"
- "bin/toybox_vendor"
- "bin/tr"
- "bin/true"
- "bin/truncate"
- "bin/tty"
- "bin/ulimit"
- "bin/umount"
- "bin/uname"
- "bin/uniq"
- "bin/unix2dos"
- "bin/unlink"
- "bin/unshare"
- "bin/uptime"
- "bin/usleep"
- "bin/uudecode"
- "bin/uuencode"
- "bin/uuidgen"
- "bin/vmstat"
- "bin/vndservice"
- "bin/vndservicemanager"
- "bin/watch"
- "bin/wc"
- "bin/which"
- "bin/whoami"
- "bin/xargs"
- "bin/xxd"
- "bin/yes"
- "bin/zcat"
- "build.prop"
- "etc/IPACM_cfg.xml"
- "etc/NOTICE.xml.gz"
- "etc/a2dp_audio_policy_configuration_7_0.xml"
- "etc/a2dp_in_audio_policy_configuration_7_0.xml"
- "etc/acdbdata/OEM/sdm670-intcodec-b4-snd-card/Bluetooth_cal.acdb"
- "etc/acdbdata/OEM/sdm670-intcodec-b4-snd-card/General_cal.acdb"
- "etc/acdbdata/OEM/sdm670-intcodec-b4-snd-card/Global_cal.acdb"
- "etc/acdbdata/OEM/sdm670-intcodec-b4-snd-card/Handset_cal.acdb"
- "etc/acdbdata/OEM/sdm670-intcodec-b4-snd-card/Hdmi_cal.acdb"
- "etc/acdbdata/OEM/sdm670-intcodec-b4-snd-card/Headset_cal.acdb"
- "etc/acdbdata/OEM/sdm670-intcodec-b4-snd-card/Speaker_cal.acdb"
- "etc/acdbdata/OEM/sdm670-intcodec-b4dev-snd-card/Bluetooth_cal.acdb"
- "etc/acdbdata/OEM/sdm670-intcodec-b4dev-snd-card/General_cal.acdb"
- "etc/acdbdata/OEM/sdm670-intcodec-b4dev-snd-card/Global_cal.acdb"
- "etc/acdbdata/OEM/sdm670-intcodec-b4dev-snd-card/Handset_cal.acdb"
- "etc/acdbdata/OEM/sdm670-intcodec-b4dev-snd-card/Hdmi_cal.acdb"
- "etc/acdbdata/OEM/sdm670-intcodec-b4dev-snd-card/Headset_cal.acdb"
- "etc/acdbdata/OEM/sdm670-intcodec-b4dev-snd-card/Speaker_cal.acdb"
- "etc/acdbdata/OEM/sdm670-intcodec-s4-snd-card/Bluetooth_cal.acdb"
- "etc/acdbdata/OEM/sdm670-intcodec-s4-snd-card/General_cal.acdb"
- "etc/acdbdata/OEM/sdm670-intcodec-s4-snd-card/Global_cal.acdb"
- "etc/acdbdata/OEM/sdm670-intcodec-s4-snd-card/Handset_cal.acdb"
- "etc/acdbdata/OEM/sdm670-intcodec-s4-snd-card/Hdmi_cal.acdb"
- "etc/acdbdata/OEM/sdm670-intcodec-s4-snd-card/Headset_cal.acdb"
- "etc/acdbdata/OEM/sdm670-intcodec-s4-snd-card/Speaker_cal.acdb"
- "etc/acdbdata/OEM/sdm670-intcodec-s4dev-snd-card/Bluetooth_cal.acdb"
- "etc/acdbdata/OEM/sdm670-intcodec-s4dev-snd-card/General_cal.acdb"
- "etc/acdbdata/OEM/sdm670-intcodec-s4dev-snd-card/Global_cal.acdb"
- "etc/acdbdata/OEM/sdm670-intcodec-s4dev-snd-card/Handset_cal.acdb"
- "etc/acdbdata/OEM/sdm670-intcodec-s4dev-snd-card/Hdmi_cal.acdb"
- "etc/acdbdata/OEM/sdm670-intcodec-s4dev-snd-card/Headset_cal.acdb"
- "etc/acdbdata/OEM/sdm670-intcodec-s4dev-snd-card/Speaker_cal.acdb"
- "etc/acdbdata/adsp_avs_config.acdb"
- "etc/audio_effects.xml"
- "etc/audio_platform_info_intcodec_b4.xml"
- "etc/audio_platform_info_intcodec_b4dev.xml"
- "etc/audio_platform_info_intcodec_s4.xml"
- "etc/audio_platform_info_intcodec_s4dev.xml"
- "etc/audio_policy_configuration.xml"
- "etc/audio_policy_configuration_a2dp_offload_disabled.xml"
- "etc/audio_policy_configuration_bluetooth_legacy_hal.xml"
- "etc/audio_policy_volumes.xml"
- "etc/bluetooth_audio_policy_configuration_7_0.xml"
- "etc/bluetooth_hearing_aid_audio_policy_configuration.xml"
- "etc/default-permissions/default-permissions.xml"
- "etc/default_volume_tables.xml"
- "etc/fs_config_dirs"
- "etc/fs_config_files"
- "etc/fstab.sdm670"
- "etc/gps.conf"
- "etc/graphite_ipc_platform_info.xml"
- "etc/group"
- "etc/hearing_aid_audio_policy_configuration_7_0.xml"
- "etc/init.insmod.cfg"
- "etc/init/android.hardware.atrace@1.0-service.pixel.rc"
- "etc/init/android.hardware.audio.service.rc"
- "etc/init/android.hardware.boot@1.0-service.rc"
- "etc/init/android.hardware.camera.provider@2.4-service_64.rc"
- "etc/init/android.hardware.cas@1.2-service.rc"
- "etc/init/android.hardware.configstore@1.1-service.rc"
- "etc/init/android.hardware.contexthub@1.2-service-generic.rc"
- "etc/init/android.hardware.drm@1.0-service.rc"
- "etc/init/android.hardware.drm@1.4-service.clearkey.rc"
- "etc/init/android.hardware.dumpstate@1.1-service.bonito.rc"
- "etc/init/android.hardware.gnss@1.1-service-qti.rc"
- "etc/init/android.hardware.graphics.composer@2.2-service.rc"
- "etc/init/android.hardware.health.storage@1.0-service.rc"
- "etc/init/android.hardware.health@2.0-service.bonito.rc"
- "etc/init/android.hardware.light@2.0-service.rc"
- "etc/init/android.hardware.media.omx@1.0-service.rc"
- "etc/init/android.hardware.memtrack@1.0-service.rc"
- "etc/init/android.hardware.nfc@1.2-service.rc"
- "etc/init/android.hardware.power-service.pixel-libperfmgr.rc"
- "etc/init/android.hardware.power.stats@1.0-service.pixel.rc"
- "etc/init/android.hardware.secure_element@1.1-service-disabled.rc"
- "etc/init/android.hardware.thermal@2.0-service.pixel.rc"
- "etc/init/android.hardware.usb@1.3-service.bonito.rc"
- "etc/init/android.hardware.wifi.supplicant-service.rc"
- "etc/init/android.hardware.wifi@1.0-service.rc"
- "etc/init/boringssl_self_test.rc"
- "etc/init/com.android.vibrator.drv2624.enable.rc"
- "etc/init/hostapd.android.rc"
- "etc/init/hw/init.bonito.rc"
- "etc/init/hw/init.sargo.rc"
- "etc/init/hw/init.sdm670.diag.rc"
- "etc/init/hw/init.sdm670.logging.rc"
- "etc/init/hw/init.sdm670.mpssrfs.rc"
- "etc/init/hw/init.sdm670.power.rc"
- "etc/init/hw/init.sdm670.rc"
- "etc/init/hw/init.sdm670.usb.rc"
- "etc/init/pixel-mm-legacy.rc"
- "etc/init/pixel-thermal-symlinks.rc"
- "etc/init/pixelstats-vendor.bonito.rc"
- "etc/init/vendor_flash_recovery.rc"
- "etc/init/vndservicemanager.rc"
- "etc/libese-nxp.conf"
- "etc/libnfc-nxp-G020E.conf"
- "etc/libnfc-nxp-G020F.conf"
- "etc/libnfc-nxp-G020G.conf"
- "etc/libnfc-nxp-G020H.conf"
- "etc/libnfc-nxp.conf"
- "etc/lowi.conf"
- "etc/media_codecs.xml"
- "etc/media_codecs_google_telephony.xml"
- "etc/media_codecs_google_video.xml"
- "etc/media_codecs_omx.xml"
- "etc/media_codecs_performance.xml"
- "etc/media_profiles_V1_0.xml"
- "etc/mixer_paths_intcodec_b4.xml"
- "etc/mixer_paths_intcodec_b4dev.xml"
- "etc/mixer_paths_intcodec_s4.xml"
- "etc/mixer_paths_intcodec_s4dev.xml"
- "etc/mkshrc"
- "etc/passwd"
- "etc/permissions/android.hardware.audio.low_latency.xml"
- "etc/permissions/android.hardware.audio.pro.xml"
- "etc/permissions/android.hardware.bluetooth.xml"
- "etc/permissions/android.hardware.bluetooth_le.xml"
- "etc/permissions/android.hardware.camera.flash-autofocus.xml"
- "etc/permissions/android.hardware.camera.front.xml"
- "etc/permissions/android.hardware.camera.full.xml"
- "etc/permissions/android.hardware.camera.raw.xml"
- "etc/permissions/android.hardware.context_hub.xml"
- "etc/permissions/android.hardware.device_unique_attestation.xml"
- "etc/permissions/android.hardware.fingerprint.xml"
- "etc/permissions/android.hardware.location.gps.xml"
- "etc/permissions/android.hardware.nfc.hce.xml"
- "etc/permissions/android.hardware.nfc.hcef.xml"
- "etc/permissions/android.hardware.nfc.xml"
- "etc/permissions/android.hardware.opengles.aep.xml"
- "etc/permissions/android.hardware.reboot_escrow.xml"
- "etc/permissions/android.hardware.se.omapi.uicc.xml"
- "etc/permissions/android.hardware.sensor.accelerometer.xml"
- "etc/permissions/android.hardware.sensor.assist.xml"
- "etc/permissions/android.hardware.sensor.barometer.xml"
- "etc/permissions/android.hardware.sensor.compass.xml"
- "etc/permissions/android.hardware.sensor.gyroscope.xml"
- "etc/permissions/android.hardware.sensor.hifi_sensors.xml"
- "etc/permissions/android.hardware.sensor.light.xml"
- "etc/permissions/android.hardware.sensor.proximity.xml"
- "etc/permissions/android.hardware.sensor.stepcounter.xml"
- "etc/permissions/android.hardware.sensor.stepdetector.xml"
- "etc/permissions/android.hardware.strongbox_keystore.xml"
- "etc/permissions/android.hardware.telephony.carrierlock.xml"
- "etc/permissions/android.hardware.telephony.cdma.xml"
- "etc/permissions/android.hardware.telephony.gsm.xml"
- "etc/permissions/android.hardware.telephony.ims.xml"
- "etc/permissions/android.hardware.touchscreen.multitouch.jazzhand.xml"
- "etc/permissions/android.hardware.usb.accessory.xml"
- "etc/permissions/android.hardware.usb.host.xml"
- "etc/permissions/android.hardware.vulkan.compute.xml"
- "etc/permissions/android.hardware.vulkan.level.xml"
- "etc/permissions/android.hardware.vulkan.version.xml"
- "etc/permissions/android.hardware.wifi.aware.xml"
- "etc/permissions/android.hardware.wifi.direct.xml"
- "etc/permissions/android.hardware.wifi.passpoint.xml"
- "etc/permissions/android.hardware.wifi.rtt.xml"
- "etc/permissions/android.hardware.wifi.xml"
- "etc/permissions/android.software.device_id_attestation.xml"
- "etc/permissions/android.software.ipsec_tunnels.xml"
- "etc/permissions/android.software.midi.xml"
- "etc/permissions/android.software.opengles.deqp.level.xml"
- "etc/permissions/android.software.sip.voip.xml"
- "etc/permissions/android.software.verified_boot.xml"
- "etc/permissions/android.software.vulkan.deqp.level.xml"
- "etc/permissions/com.google.hardware.camera.easel_2018.xml"
- "etc/permissions/com.nxp.mifare.xml"
- "etc/permissions/handheld_core_hardware.xml"
- "etc/powerhint.json"
- "etc/r_submix_audio_policy_configuration.xml"
- "etc/sec_config"
- "etc/seccomp_policy/configstore@1.1.policy"
- "etc/seccomp_policy/mediacodec.policy"
- "etc/selinux/plat_pub_versioned.cil"
- "etc/selinux/plat_sepolicy_vers.txt"
- "etc/selinux/precompiled_sepolicy"
- "etc/selinux/precompiled_sepolicy.plat_sepolicy_and_mapping.sha256"
- "etc/selinux/precompiled_sepolicy.product_sepolicy_and_mapping.sha256"
- "etc/selinux/selinux_denial_metadata"
- "etc/selinux/vendor_file_contexts"
- "etc/selinux/vendor_hwservice_contexts"
- "etc/selinux/vendor_mac_permissions.xml"
- "etc/selinux/vendor_property_contexts"
- "etc/selinux/vendor_seapp_contexts"
- "etc/selinux/vendor_sepolicy.cil"
- "etc/selinux/vendor_service_contexts"
- "etc/selinux/vndservice_contexts"
- "etc/sensors/hals.conf"
- "etc/sound_trigger_mixer_paths.xml"
- "etc/sound_trigger_platform_info.xml"
- "etc/sysconfig/component-overrides.xml"
- "etc/thermal-engine-sargo.conf"
- "etc/thermal_info_config.json"
- "etc/usb_audio_policy_configuration.xml"
- "etc/vintf/compatibility_matrix.xml"
- "etc/vintf/manifest.xml"
- "etc/vintf/manifest/android.hardware.atrace@1.0-service.pixel.xml"
- "etc/vintf/manifest/android.hardware.cas@1.2-service.xml"
- "etc/vintf/manifest/android.hardware.contexthub@1.2-generic.xml"
- "etc/vintf/manifest/android.hardware.power-service.pixel.xml"
- "etc/vintf/manifest/android.hardware.thermal@2.0-service.pixel.xml"
- "etc/vintf/manifest/android.hardware.usb.gadget@1.1-service.bonito.xml"
- "etc/vintf/manifest/android.hardware.usb@1.3-service.bonito.xml"
- "etc/vintf/manifest/android.hardware.wifi.hostapd.xml"
- "etc/vintf/manifest/android.hardware.wifi.supplicant.xml"
- "etc/vintf/manifest/android.hardware.wifi@1.0-service.xml"
- "etc/vintf/manifest/com.android.vibrator.drv2624.xml"
- "etc/vintf/manifest/manifest_android.hardware.drm@1.4-service.clearkey.xml"
- "etc/vintf/manifest/manifest_android.hardware.health.storage@1.0.xml"
- "etc/wifi/p2p_supplicant_overlay.conf"
- "etc/wifi/wifi_concurrency_cfg.txt"
- "etc/wifi/wpa_supplicant.conf"
- "etc/wifi/wpa_supplicant_overlay.conf"
- "firmware/crus_sp_config_b4_rx.bin"
- "firmware/crus_sp_config_b4_tx.bin"
- "firmware/crus_sp_config_s4_rx.bin"
- "firmware/crus_sp_config_s4_tx.bin"
- "firmware/cs40l20.bin"
- "firmware/cs40l20.wmfw"
- "firmware/drv2624.bin"
- "firmware/rt5514_dsp_fw1.bin"
- "firmware/rt5514_dsp_fw2.bin"
- "firmware/rt5514_dsp_fw3.bin"
- "firmware/rt5514_dsp_fw4.bin"
- "firmware/wlan/qca_cld/WCNSS_qcom_cfg.ini"
- "lib/android.hardware.audio.common-util.so"
- "lib/android.hardware.audio.common@5.0.so"
- "lib/android.hardware.audio.common@7.0-enums.so"
- "lib/android.hardware.audio.common@7.0-util.so"
- "lib/android.hardware.audio.common@7.0.so"
- "lib/android.hardware.audio.effect@7.0-util.so"
- "lib/android.hardware.audio.effect@7.0.so"
- "lib/android.hardware.audio@7.0-util.so"
- "lib/android.hardware.audio@7.0.so"
- "lib/android.hardware.bluetooth.audio@2.0.so"
- "lib/android.hardware.bluetooth.audio@2.1.so"
- "lib/android.hardware.boot@1.0.so"
- "lib/android.hardware.camera.common@1.0.so"
- "lib/android.hardware.camera.device@1.0.so"
- "lib/android.hardware.camera.device@3.2.so"
- "lib/android.hardware.camera.device@3.3.so"
- "lib/android.hardware.camera.device@3.4.so"
- "lib/android.hardware.camera.device@3.5.so"
- "lib/android.hardware.camera.device@3.6.so"
- "lib/android.hardware.camera.provider@2.4-external.so"
- "lib/android.hardware.camera.provider@2.4-legacy.so"
- "lib/android.hardware.camera.provider@2.4.so"
- "lib/android.hardware.cas.native@1.0.so"
- "lib/android.hardware.cas@1.0.so"
- "lib/android.hardware.cas@1.1.so"
- "lib/android.hardware.cas@1.2.so"
- "lib/android.hardware.drm@1.0.so"
- "lib/android.hardware.gnss@1.0.so"
- "lib/android.hardware.gnss@1.1.so"
- "lib/android.hardware.light@2.0.so"
- "lib/android.hardware.power-V1-ndk_platform.so"
- "lib/android.hardware.power@1.0.so"
- "lib/android.hardware.power@1.1.so"
- "lib/android.hardware.power@1.2.so"
- "lib/android.hardware.radio@1.0.so"
- "lib/android.hardware.radio@1.1.so"
- "lib/android.hardware.soundtrigger@2.1.so"
- "lib/android.hardware.soundtrigger@2.2.so"
- "lib/android.hidl.allocator@1.0.so"
- "lib/camera.device@1.0-impl.so"
- "lib/camera.device@3.2-impl.so"
- "lib/camera.device@3.3-impl.so"
- "lib/camera.device@3.4-external-impl.so"
- "lib/camera.device@3.4-impl.so"
- "lib/camera.device@3.5-external-impl.so"
- "lib/camera.device@3.5-impl.so"
- "lib/camera.device@3.6-external-impl.so"
- "lib/hw/android.hardware.audio.effect@7.0-impl.so"
- "lib/hw/android.hardware.audio@7.0-impl.so"
- "lib/hw/android.hardware.bluetooth.audio@2.0-impl.so"
- "lib/hw/android.hardware.boot@1.0-impl.so"
- "lib/hw/android.hardware.camera.provider@2.4-impl.so"
- "lib/hw/android.hardware.drm@1.0-impl.so"
- "lib/hw/android.hardware.gnss@1.1-impl-qti.so"
- "lib/hw/android.hardware.light@2.0-impl.so"
- "lib/hw/android.hardware.memtrack@1.0-impl.so"
- "lib/hw/android.hardware.renderscript@1.0-impl.so"
- "lib/hw/android.hardware.soundtrigger@2.2-impl.so"
- "lib/hw/audio.bluetooth.default.so"
- "lib/hw/audio.primary.default.so"
- "lib/hw/audio.primary.sdm710.so"
- "lib/hw/audio.r_submix.default.so"
- "lib/hw/audio.usb.default.so"
- "lib/hw/bootctrl.sdm710.so"
- "lib/hw/gralloc.default.so"
- "lib/hw/local_time.default.so"
- "lib/hw/power.default.so"
- "lib/hw/sensors.sargo.so"
- "lib/hw/vibrator.default.so"
- "lib/libalsautils.so"
- "lib/libavservices_minijail.so"
- "lib/libbluetooth_audio_session.so"
- "lib/libeffects.so"
- "lib/libeffectsconfig.so"
- "lib/libgnss.so"
- "lib/libgps.utils.so"
- "lib/libloc_core.so"
- "lib/liblocation_api.so"
- "lib/libmediautils_vendor.so"
- "lib/libmemunreachable.so"
- "lib/libnbaio_mono.so"
- "lib/libopus.so"
- "lib/libprotobuf-cpp-full-3.9.1.so"
- "lib/libprotobuf-cpp-lite-3.9.1.so"
- "lib/libreference-ril.so"
- "lib/libril.so"
- "lib/librilutils.so"
- "lib/libstagefright_amrnb_common.so"
- "lib/libstagefright_enc_common.so"
- "lib/libstagefright_flacdec.so"
- "lib/libstagefright_soft_aacdec.so"
- "lib/libstagefright_soft_aacenc.so"
- "lib/libstagefright_soft_amrdec.so"
- "lib/libstagefright_soft_amrnbenc.so"
- "lib/libstagefright_soft_amrwbenc.so"
- "lib/libstagefright_soft_avcdec.so"
- "lib/libstagefright_soft_avcenc.so"
- "lib/libstagefright_soft_flacdec.so"
- "lib/libstagefright_soft_flacenc.so"
- "lib/libstagefright_soft_g711dec.so"
- "lib/libstagefright_soft_gsmdec.so"
- "lib/libstagefright_soft_hevcdec.so"
- "lib/libstagefright_soft_mp3dec.so"
- "lib/libstagefright_soft_mpeg2dec.so"
- "lib/libstagefright_soft_mpeg4dec.so"
- "lib/libstagefright_soft_mpeg4enc.so"
- "lib/libstagefright_soft_opusdec.so"
- "lib/libstagefright_soft_rawdec.so"
- "lib/libstagefright_soft_vorbisdec.so"
- "lib/libstagefright_soft_vpxdec.so"
- "lib/libstagefright_soft_vpxenc.so"
- "lib/libstagefright_softomx.so"
- "lib/libstagefright_softomx_plugin.so"
- "lib/libtinycompress.so"
- "lib/libvibrator.so"
- "lib/libvorbisidec.so"
- "lib/libvpx.so"
- "lib/libwpa_client.so"
- "lib/mediacas/libclearkeycasplugin.so"
- "lib/mediadrm/libdrmclearkeyplugin.so"
- "lib/modules/lcd.ko"
- "lib/modules/modules.alias"
- "lib/modules/modules.dep"
- "lib/modules/modules.load"
- "lib/modules/modules.softdep"
- "lib/modules/synaptics_dsx_core.ko"
- "lib/modules/synaptics_dsx_fw_update.ko"
- "lib/modules/synaptics_dsx_rmi_dev.ko"
- "lib/modules/synaptics_dsx_test_reporting.ko"
- "lib/modules/wlan.ko"
- "lib/soundfx/libaudiopreprocessing.so"
- "lib/soundfx/libbundlewrapper.so"
- "lib/soundfx/libdownmix.so"
- "lib/soundfx/libdynproc.so"
- "lib/soundfx/libeffectproxy.so"
- "lib/soundfx/libhapticgenerator.so"
- "lib/soundfx/libldnhncr.so"
- "lib/soundfx/libmalistener.so"
- "lib/soundfx/libqcompostprocbundle.so"
- "lib/soundfx/libqcomvisualizer.so"
- "lib/soundfx/libqcomvoiceprocessing.so"
- "lib/soundfx/libqcomvoiceprocessingdescriptors.so"
- "lib/soundfx/libreverbwrapper.so"
- "lib/soundfx/libvisualizer.so"
- "lib/soundfx/libvolumelistener.so"
- "lib64/android.frameworks.sensorservice@1.0.so"
- "lib64/android.frameworks.stats-V1-ndk_platform.so"
- "lib64/android.hardware.atrace@1.0.so"
- "lib64/android.hardware.audio.common@5.0.so"
- "lib64/android.hardware.bluetooth.audio@2.0.so"
- "lib64/android.hardware.bluetooth.audio@2.1.so"
- "lib64/android.hardware.boot@1.0.so"
- "lib64/android.hardware.camera.common@1.0.so"
- "lib64/android.hardware.camera.device@1.0.so"
- "lib64/android.hardware.camera.device@3.2.so"
- "lib64/android.hardware.camera.device@3.3.so"
- "lib64/android.hardware.camera.device@3.4.so"
- "lib64/android.hardware.camera.device@3.5.so"
- "lib64/android.hardware.camera.device@3.6.so"
- "lib64/android.hardware.camera.provider@2.4-external.so"
- "lib64/android.hardware.camera.provider@2.4-legacy.so"
- "lib64/android.hardware.camera.provider@2.4.so"
- "lib64/android.hardware.contexthub@1.0.so"
- "lib64/android.hardware.contexthub@1.1.so"
- "lib64/android.hardware.contexthub@1.2.so"
- "lib64/android.hardware.drm@1.0.so"
- "lib64/android.hardware.drm@1.1.so"
- "lib64/android.hardware.drm@1.2.so"
- "lib64/android.hardware.drm@1.3.so"
- "lib64/android.hardware.drm@1.4.so"
- "lib64/android.hardware.dumpstate@1.0.so"
- "lib64/android.hardware.dumpstate@1.1.so"
- "lib64/android.hardware.gnss@1.0.so"
- "lib64/android.hardware.gnss@1.1.so"
- "lib64/android.hardware.graphics.composer@2.1-resources.so"
- "lib64/android.hardware.graphics.composer@2.1.so"
- "lib64/android.hardware.graphics.composer@2.2-resources.so"
- "lib64/android.hardware.graphics.composer@2.2.so"
- "lib64/android.hardware.health.storage@1.0.so"
- "lib64/android.hardware.health@1.0.so"
- "lib64/android.hardware.health@2.0.so"
- "lib64/android.hardware.keymaster@3.0.so"
- "lib64/android.hardware.keymaster@4.0.so"
- "lib64/android.hardware.keymaster@4.1.so"
- "lib64/android.hardware.light@2.0.so"
- "lib64/android.hardware.nfc@1.0.so"
- "lib64/android.hardware.nfc@1.1.so"
- "lib64/android.hardware.nfc@1.2.so"
- "lib64/android.hardware.power-V1-ndk_platform.so"
- "lib64/android.hardware.power.stats@1.0.so"
- "lib64/android.hardware.power@1.0.so"
- "lib64/android.hardware.power@1.1.so"
- "lib64/android.hardware.power@1.2.so"
- "lib64/android.hardware.radio@1.0.so"
- "lib64/android.hardware.radio@1.1.so"
- "lib64/android.hardware.secure_element@1.0.so"
- "lib64/android.hardware.secure_element@1.1.so"
- "lib64/android.hardware.sensors@1.0.so"
- "lib64/android.hardware.soundtrigger@2.1.so"
- "lib64/android.hardware.soundtrigger@2.2.so"
- "lib64/android.hardware.tetheroffload.config@1.0.so"
- "lib64/android.hardware.tetheroffload.control@1.0.so"
- "lib64/android.hardware.thermal@1.0.so"
- "lib64/android.hardware.thermal@2.0.so"
- "lib64/android.hardware.usb.gadget@1.0.so"
- "lib64/android.hardware.usb.gadget@1.1.so"
- "lib64/android.hardware.usb@1.0.so"
- "lib64/android.hardware.usb@1.1.so"
- "lib64/android.hardware.usb@1.2.so"
- "lib64/android.hardware.usb@1.3.so"
- "lib64/android.hardware.wifi.hostapd@1.0.so"
- "lib64/android.hardware.wifi.hostapd@1.1.so"
- "lib64/android.hardware.wifi.hostapd@1.2.so"
- "lib64/android.hardware.wifi.hostapd@1.3.so"
- "lib64/android.hardware.wifi.supplicant@1.0.so"
- "lib64/android.hardware.wifi.supplicant@1.1.so"
- "lib64/android.hardware.wifi.supplicant@1.2.so"
- "lib64/android.hardware.wifi.supplicant@1.3.so"
- "lib64/android.hardware.wifi.supplicant@1.4.so"
- "lib64/android.hardware.wifi@1.0.so"
- "lib64/android.hardware.wifi@1.1.so"
- "lib64/android.hardware.wifi@1.2.so"
- "lib64/android.hardware.wifi@1.3.so"
- "lib64/android.hardware.wifi@1.4.so"
- "lib64/android.hardware.wifi@1.5.so"
- "lib64/android.hidl.allocator@1.0.so"
- "lib64/android.system.wifi.keystore@1.0.so"
- "lib64/camera.device@1.0-impl.so"
- "lib64/camera.device@3.2-impl.so"
- "lib64/camera.device@3.3-impl.so"
- "lib64/camera.device@3.4-external-impl.so"
- "lib64/camera.device@3.4-impl.so"
- "lib64/camera.device@3.5-external-impl.so"
- "lib64/camera.device@3.5-impl.so"
- "lib64/camera.device@3.6-external-impl.so"
- "lib64/ese_spi_nxp.so"
- "lib64/hw/android.hardware.bluetooth.audio@2.0-impl.so"
- "lib64/hw/android.hardware.boot@1.0-impl.so"
- "lib64/hw/android.hardware.camera.provider@2.4-impl.so"
- "lib64/hw/android.hardware.drm@1.0-impl.so"
- "lib64/hw/android.hardware.gnss@1.1-impl-qti.so"
- "lib64/hw/android.hardware.light@2.0-impl.so"
- "lib64/hw/android.hardware.memtrack@1.0-impl.so"
- "lib64/hw/android.hardware.renderscript@1.0-impl.so"
- "lib64/hw/android.hardware.soundtrigger@2.2-impl.so"
- "lib64/hw/audio.bluetooth.default.so"
- "lib64/hw/audio.primary.default.so"
- "lib64/hw/audio.primary.sdm710.so"
- "lib64/hw/audio.r_submix.default.so"
- "lib64/hw/audio.usb.default.so"
- "lib64/hw/bootctrl.sdm710.so"
- "lib64/hw/gralloc.default.so"
- "lib64/hw/local_time.default.so"
- "lib64/hw/power.default.so"
- "lib64/hw/sensors.sargo.so"
- "lib64/hw/vibrator.default.so"
- "lib64/libalsautils.so"
- "lib64/libbinderdebug.so"
- "lib64/libbluetooth_audio_session.so"
- "lib64/libcld80211.so"
- "lib64/libdisppower-pixel.so"
- "lib64/libeffects.so"
- "lib64/libeffectsconfig.so"
- "lib64/libgnss.so"
- "lib64/libgps.utils.so"
- "lib64/libhwc2on1adapter.so"
- "lib64/libhwc2onfbadapter.so"
- "lib64/libhwminijail.so"
- "lib64/libipanat.so"
- "lib64/libkeymaster4_1support.so"
- "lib64/libkeymaster4support.so"
- "lib64/libkeystore-engine-wifi-hidl.so"
- "lib64/libkeystore-wifi-hidl.so"
- "lib64/libloc_core.so"
- "lib64/liblocation_api.so"
- "lib64/libnbaio_mono.so"
- "lib64/libnetfilter_conntrack.so"
- "lib64/libnfnetlink.so"
- "lib64/liboffloadhal.so"
- "lib64/libperfmgr.so"
- "lib64/libpixelhealth.so"
- "lib64/libprotobuf-cpp-full-3.9.1.so"
- "lib64/libprotobuf-cpp-lite-3.9.1.so"
- "lib64/libreference-ril.so"
- "lib64/libril.so"
- "lib64/librilutils.so"
- "lib64/libsensorndkbridge.so"
- "lib64/libtinycompress.so"
- "lib64/libvibrator.so"
- "lib64/libwifi-hal.so"
- "lib64/libwpa_client.so"
- "lib64/libz_stable.so"
- "lib64/ls_client.so"
- "lib64/mediacas/libclearkeycasplugin.so"
- "lib64/mediadrm/libdrmclearkeyplugin.so"
- "lib64/nfc_nci_nxp.so"
- "lib64/pixel-power-ext-V1-ndk_platform.so"
- "lib64/pixelpowerstats_provider_aidl_interface-cpp.so"
- "lib64/soundfx/libaudiopreprocessing.so"
- "lib64/soundfx/libbundlewrapper.so"
- "lib64/soundfx/libdownmix.so"
- "lib64/soundfx/libdynproc.so"
- "lib64/soundfx/libeffectproxy.so"
- "lib64/soundfx/libhapticgenerator.so"
- "lib64/soundfx/libldnhncr.so"
- "lib64/soundfx/libmalistener.so"
- "lib64/soundfx/libqcompostprocbundle.so"
- "lib64/soundfx/libqcomvisualizer.so"
- "lib64/soundfx/libqcomvoiceprocessing.so"
- "lib64/soundfx/libqcomvoiceprocessingdescriptors.so"
- "lib64/soundfx/libreverbwrapper.so"
- "lib64/soundfx/libvisualizer.so"
- "lib64/soundfx/libvolumelistener.so"
- "lib64/vendor.nxp.nxpese@1.0.so"
- "lib64/vendor.nxp.nxpnfc@1.0.so"
- "odm/etc/NOTICE.xml.gz"
- "odm/etc/build.prop"
- "odm/etc/group"
- "odm/etc/passwd"
- "odm/etc/permissions/sku_G020A/android.hardware.nfc.uicc.xml"
- "odm/etc/permissions/sku_G020B/android.hardware.nfc.uicc.xml"
- "odm/etc/permissions/sku_G020C/android.hardware.nfc.uicc.xml"
- "odm/etc/permissions/sku_G020D/android.hardware.nfc.ese.xml"
- "odm/etc/permissions/sku_G020D/android.hardware.se.omapi.ese.xml"
- "odm/etc/permissions/sku_G020D/com.google.hardware.pixel.japan.xml"
- "odm/etc/permissions/sku_G020E/android.hardware.nfc.uicc.xml"
- "odm/etc/permissions/sku_G020F/android.hardware.nfc.uicc.xml"
- "odm/etc/permissions/sku_G020G/android.hardware.nfc.uicc.xml"
- "odm/etc/permissions/sku_G020H/android.hardware.nfc.ese.xml"
- "odm/etc/permissions/sku_G020H/com.google.hardware.pixel.japan.xml"
- "odm/etc/vintf/manifest_G020A.xml"
- "odm/etc/vintf/manifest_G020B.xml"
- "odm/etc/vintf/manifest_G020C.xml"
- "odm/etc/vintf/manifest_G020D.xml"
- "odm/etc/vintf/manifest_G020E.xml"
- "odm/etc/vintf/manifest_G020F.xml"
- "odm/etc/vintf/manifest_G020G.xml"
- "odm/etc/vintf/manifest_G020H.xml"
- "odm_dlkm/etc/NOTICE.xml.gz"
- "odm_dlkm/etc/build.prop"
- "overlay/EmergencyInfo__auto_generated_rro_vendor.apk"
- "overlay/NfcNci__auto_generated_rro_vendor.apk"
- "overlay/Settings__auto_generated_rro_vendor.apk"
- "overlay/StorageManager__auto_generated_rro_vendor.apk"
- "overlay/SystemUI__auto_generated_rro_vendor.apk"
- "overlay/TeleService__auto_generated_rro_vendor.apk"
- "overlay/Telecom__auto_generated_rro_vendor.apk"
- "overlay/Traceur__auto_generated_rro_vendor.apk"
- "overlay/framework-res__auto_generated_rro_vendor.apk"
- "ueventd.rc"
- "usr/idc/uinput-fpc.idc"
- "usr/keylayout/uinput-fpc.kl"
- "vendor_dlkm/etc/NOTICE.xml.gz"
- "vendor_dlkm/etc/build.prop"
-
- # Exclude overlays, symlinks and extra files that we override
-
- # Overlays
- "overlay/SettingsGoogle__auto_generated_rro_vendor.apk"
- "overlay/SystemUIGoogle__auto_generated_rro_vendor.apk"
-
- # SELinux
- "etc/selinux/precompiled_sepolicy.system_ext_sepolicy_and_mapping.sha256"
-
- # Symlinks
- "lib/libEGL_adreno.so"
- "lib/libq3dtools_adreno.so"
- "lib64/libEGL_adreno.so"
- "lib64/libq3dtools_adreno.so"
- "rfs/apq/gnss/hlos"
- "rfs/apq/gnss/ramdumps"
- "rfs/apq/gnss/readonly/firmware"
- "rfs/apq/gnss/readonly/vendor/firmware"
- "rfs/apq/gnss/readwrite"
- "rfs/apq/gnss/shared"
- "rfs/mdm/adsp/hlos"
- "rfs/mdm/adsp/ramdumps"
- "rfs/mdm/adsp/readonly/firmware"
- "rfs/mdm/adsp/readonly/vendor/firmware"
- "rfs/mdm/adsp/readwrite"
- "rfs/mdm/adsp/shared"
- "rfs/mdm/cdsp/hlos"
- "rfs/mdm/cdsp/ramdumps"
- "rfs/mdm/cdsp/readonly/firmware"
- "rfs/mdm/cdsp/readwrite"
- "rfs/mdm/cdsp/shared"
- "rfs/mdm/mpss/hlos"
- "rfs/mdm/mpss/ramdumps"
- "rfs/mdm/mpss/readonly/firmware"
- "rfs/mdm/mpss/readonly/vendor/firmware"
- "rfs/mdm/mpss/readwrite"
- "rfs/mdm/mpss/shared"
- "rfs/mdm/slpi/hlos"
- "rfs/mdm/slpi/ramdumps"
- "rfs/mdm/slpi/readonly/firmware"
- "rfs/mdm/slpi/readwrite"
- "rfs/mdm/slpi/shared"
- "rfs/mdm/tn/hlos"
- "rfs/mdm/tn/ramdumps"
- "rfs/mdm/tn/readonly/firmware"
- "rfs/mdm/tn/readwrite"
- "rfs/mdm/tn/shared"
- "rfs/msm/adsp/hlos"
- "rfs/msm/adsp/ramdumps"
- "rfs/msm/adsp/readonly/firmware"
- "rfs/msm/adsp/readonly/vendor/firmware"
- "rfs/msm/adsp/readwrite"
- "rfs/msm/adsp/shared"
- "rfs/msm/cdsp/hlos"
- "rfs/msm/cdsp/ramdumps"
- "rfs/msm/cdsp/readonly/firmware"
- "rfs/msm/cdsp/readonly/vendor/firmware"
- "rfs/msm/cdsp/readwrite"
- "rfs/msm/cdsp/shared"
- "rfs/msm/mpss/hlos"
- "rfs/msm/mpss/ramdumps"
- "rfs/msm/mpss/readonly/firmware"
- "rfs/msm/mpss/readonly/vendor/firmware"
- "rfs/msm/mpss/readwrite"
- "rfs/msm/mpss/shared"
- "rfs/msm/slpi/hlos"
- "rfs/msm/slpi/ramdumps"
- "rfs/msm/slpi/readonly/firmware"
- "rfs/msm/slpi/readonly/vendor/firmware"
- "rfs/msm/slpi/readwrite"
- "rfs/msm/slpi/shared"
-
- # Exclude files that compile with BUILD_WITHOUT_VENDOR := false
- # or manually added as build targets in device-lineage.mk
-
- # Bluetooth
- "lib/android.hardware.bluetooth@1.0.so"
- "lib/hardware.google.bluetooth.bt_channel_avoidance@1.0.so"
- "lib/hardware.google.bluetooth.sar@1.0.so"
- "lib/vendor.qti.hardware.bluetooth_audio@2.0.so"
- "lib64/android.hardware.bluetooth@1.0.so"
- "lib64/hardware.google.bluetooth.bt_channel_avoidance@1.0.so"
- "lib64/hardware.google.bluetooth.sar@1.0.so"
- "lib64/vendor.qti.hardware.bluetooth_audio@2.0.so"
-
- # CHRE
- "bin/chre"
- "etc/init/chre_daemon.rc"
-
- # Codec2
- "lib/android.hardware.media.c2@1.0.so"
- "lib/libavservices_minijail_vendor.so"
- "lib/libcodec2_hidl@1.0.so"
- "lib/libcodec2_hidl_plugin.so"
- "lib/libcodec2_vndk.so"
- "lib/libstagefright_bufferpool@2.0.1.so"
- "lib64/android.hardware.media.c2@1.0.so"
- "lib64/libcodec2_vndk.so"
- "lib64/libstagefright_bufferpool@2.0.1.so"
-
- # Confirmation UI
- "lib64/android.hardware.confirmationui@1.0.so"
- "lib64/libteeui_hal_support.so"
-
- # Display
- "bin/hw/vendor.qti.hardware.display.allocator@1.0-service"
- "etc/init/vendor.qti.hardware.display.allocator@1.0-service.rc"
- "lib/android.hardware.graphics.composer@2.1.so"
- "lib/android.hardware.graphics.composer@2.2.so"
- "lib/android.hardware.graphics.composer@2.3.so"
- "lib/hw/android.hardware.graphics.mapper@2.0-impl-qti-display.so"
- "lib/hw/gralloc.sdm710.so"
- "lib/hw/hwcomposer.sdm710.so"
- "lib/hw/memtrack.sdm710.so"
- "lib/libdisplaydebug.so"
- "lib/libdrm.so"
- "lib/libdrmutils.so"
- "lib/libgpu_tonemapper.so"
- "lib/libgralloccore.so"
- "lib/libgrallocutils.so"
- "lib/libqdMetaData.so"
- "lib/libqdutils.so"
- "lib/libqservice.so"
- "lib/libsdmcore.so"
- "lib/libsdmutils.so"
- "lib/vendor.display.config@1.0.so"
- "lib/vendor.display.config@1.1.so"
- "lib/vendor.display.config@1.2.so"
- "lib/vendor.display.config@1.3.so"
- "lib64/android.hardware.graphics.composer@2.3.so"
- "lib64/hw/android.hardware.graphics.mapper@2.0-impl-qti-display.so"
- "lib64/hw/gralloc.sdm710.so"
- "lib64/hw/hwcomposer.sdm710.so"
- "lib64/hw/memtrack.sdm710.so"
- "lib64/libdisplaydebug.so"
- "lib64/libdrm.so"
- "lib64/libdrmutils.so"
- "lib64/libgpu_tonemapper.so"
- "lib64/libgralloccore.so"
- "lib64/libgrallocutils.so"
- "lib64/libqdMetaData.so"
- "lib64/libqdutils.so"
- "lib64/libqservice.so"
- "lib64/libsdmcore.so"
- "lib64/libsdmutils.so"
- "lib64/vendor.display.config@1.0.so"
- "lib64/vendor.display.config@1.1.so"
- "lib64/vendor.display.config@1.2.so"
- "lib64/vendor.display.config@1.3.so"
-
- # HIDL
- "lib/libhidltransport.so"
- "lib/libhwbinder.so"
- "lib64/libhidltransport.so"
- "lib64/libhwbinder.so"
-
- # Identity credential
- "etc/permissions/android.hardware.identity_credential.xml"
- "lib64/android.hardware.identity-support-lib.so"
- "lib64/libcppbor_external.so"
- "lib64/libcppcose_rkp.so"
- "lib64/libkeymaster_messages.so"
- "lib64/libkeymaster_portable.so"
- "lib64/libpuresoftkeymasterdevice.so"
- "lib64/libsoft_attestation_cert.so"
-
- # Json
- "lib/libjson.so"
- "lib64/libjson.so"
-
- # Light
- "lib/hardware.google.light@1.0.so"
- "lib/hw/lights.qcom.so"
- "lib64/hardware.google.light@1.0.so"
- "lib64/hw/lights.qcom.so"
-
- # Media
- "lib/libOmxCore.so"
- "lib/libOmxVdec.so"
- "lib/libOmxVenc.so"
- "lib/libc2dcolorconvert.so"
- "lib/libmm-omxcore.so"
- "lib/libplatformconfig.so"
- "lib/libstagefrighthw.so"
- "lib64/libOmxCore.so"
- "lib64/libOmxVdec.so"
- "lib64/libOmxVenc.so"
- "lib64/libc2dcolorconvert.so"
- "lib64/libmm-omxcore.so"
- "lib64/libplatformconfig.so"
- "lib64/libstagefrighthw.so"
-
- # Protobuf
- "lib/libprotobuf-cpp-full.so"
- "lib64/libprotobuf-cpp-full.so"
-
- # RIL
- "bin/cnd"
- "bin/diag_mdlog"
- "bin/hw/qcrild"
- "bin/hw/vendor.google.radioext@1.0-service"
- "bin/ims_rtp_daemon"
- "bin/imsdatadaemon"
- "bin/imsqmidaemon"
- "bin/imsrcsd"
- "bin/irsc_util"
- "bin/modem_svc"
- "bin/netmgrd"
- "bin/pd-mapper"
- "bin/port-bridge"
- "bin/qti"
- "bin/rmt_storage"
- "bin/tftp_server"
- "etc/cne/SwimConfig.xml"
- "etc/cne/wqeclient/ATT/ATT_profile1.xml"
- "etc/cne/wqeclient/ATT/ATT_profile2.xml"
- "etc/cne/wqeclient/ATT/ATT_profile3.xml"
- "etc/cne/wqeclient/ATT/ATT_profile4.xml"
- "etc/cne/wqeclient/ATT/ATT_profile5.xml"
- "etc/cne/wqeclient/ATT/ATT_profile6.xml"
- "etc/cne/wqeclient/ROW/ROW_profile1.xml"
- "etc/cne/wqeclient/ROW/ROW_profile2.xml"
- "etc/cne/wqeclient/ROW/ROW_profile3.xml"
- "etc/cne/wqeclient/ROW/ROW_profile4.xml"
- "etc/cne/wqeclient/ROW/ROW_profile5.xml"
- "etc/cne/wqeclient/ROW/ROW_profile6.xml"
- "etc/cne/wqeclient/ROW/ROW_profile7.xml"
- "etc/cne/wqeclient/VZW/VZW_profile1.xml"
- "etc/cne/wqeclient/VZW/VZW_profile2.xml"
- "etc/cne/wqeclient/VZW/VZW_profile3.xml"
- "etc/cne/wqeclient/VZW/VZW_profile4.xml"
- "etc/cne/wqeclient/VZW/VZW_profile5.xml"
- "etc/cne/wqeclient/VZW/VZW_profile6.xml"
- "etc/data/dsi_config.xml"
- "etc/data/netmgr_config.xml"
- "etc/init/qcrild.rc"
- "etc/init/vendor.google.radioext@1.0-service.rc"
- "lib/com.qualcomm.qti.imscmservice@1.0.so"
- "lib/com.qualcomm.qti.uceservice@2.0.so"
- "lib/com.qualcomm.qti.uceservice@2.1.so"
- "lib/com.quicinc.cne.api@1.0.so"
- "lib/com.quicinc.cne.api@1.1.so"
- "lib/com.quicinc.cne.constants@1.0.so"
- "lib/com.quicinc.cne.constants@2.0.so"
- "lib/com.quicinc.cne.constants@2.1.so"
- "lib/com.quicinc.cne.server@1.0.so"
- "lib/com.quicinc.cne.server@2.0.so"
- "lib/com.quicinc.cne.server@2.1.so"
- "lib/lib-imsdpl.so"
- "lib/lib-imsqimf.so"
- "lib/lib-imsrcs-v2.so"
- "lib/lib-imsxml.so"
- "lib/lib-rtpcommon.so"
- "lib/lib-rtpcore.so"
- "lib/lib-rtpdaemoninterface.so"
- "lib/lib-rtpsl.so"
- "lib/lib-uceservice.so"
- "lib/libcne.so"
- "lib/libcneapiclient.so"
- "lib/libcneoplookup.so"
- "lib/libcneqmiutils.so"
- "lib/libconfigdb.so"
- "lib/libdiag.so"
- "lib/libdsi_netctrl.so"
- "lib/libdsutils.so"
- "lib/libidl.so"
- "lib/liblqe.so"
- "lib/libmdmdetect.so"
- "lib/libnetmgr.so"
- "lib/libpdmapper.so"
- "lib/libpdnotifier.so"
- "lib/libqcci_legacy.so"
- "lib/libqcmaputils.so"
- "lib/libqcrilFramework.so"
- "lib/libqdi.so"
- "lib/libqdp.so"
- "lib/libqmi.so"
- "lib/libqmi_cci.so"
- "lib/libqmi_client_helper.so"
- "lib/libqmi_client_qmux.so"
- "lib/libqmi_common_so.so"
- "lib/libqmi_csi.so"
- "lib/libqmi_encdec.so"
- "lib/libqmi_vs-google-1.so"
- "lib/libqmiservices.so"
- "lib/libqrtr.so"
- "lib/libqsocket.so"
- "lib/libril-qc-ltedirectdisc.so"
- "lib/libril-qc-radioconfig.so"
- "lib/libril-qcril-hook-oem.so"
- "lib/librilqmiservices.so"
- "lib/libsettings.so"
- "lib/libsystem_health_mon.so"
- "lib/libwms.so"
- "lib/libwqe.so"
- "lib/libxml.so"
- "lib/qcrild_librilutils.so"
- "lib/vendor.google.radioext@1.0.so"
- "lib/vendor.google.radioext@1.1.so"
- "lib/vendor.google.radioext@1.2.so"
- "lib/vendor.google.radioext@1.3.so"
- "lib/vendor.qti.hardware.data.latency@1.0.so"
- "lib/vendor.qti.hardware.radio.am@1.0.so"
- "lib/vendor.qti.hardware.radio.atcmdfwd@1.0.so"
- "lib/vendor.qti.hardware.radio.ims@1.0.so"
- "lib/vendor.qti.hardware.radio.ims@1.1.so"
- "lib/vendor.qti.hardware.radio.ims@1.2.so"
- "lib/vendor.qti.hardware.radio.ims@1.3.so"
- "lib/vendor.qti.hardware.radio.ims@1.4.so"
- "lib/vendor.qti.hardware.radio.internal.deviceinfo@1.0.so"
- "lib/vendor.qti.hardware.radio.qcrilhook@1.0.so"
- "lib/vendor.qti.hardware.radio.qtiradio@1.0.so"
- "lib/vendor.qti.hardware.radio.qtiradio@2.0.so"
- "lib/vendor.qti.hardware.radio.qtiradio@2.1.so"
- "lib/vendor.qti.hardware.radio.qtiradio@2.2.so"
- "lib/vendor.qti.hardware.radio.uim@1.0.so"
- "lib/vendor.qti.hardware.radio.uim@1.1.so"
- "lib/vendor.qti.hardware.radio.uim_remote_client@1.0.so"
- "lib/vendor.qti.hardware.radio.uim_remote_client@1.1.so"
- "lib/vendor.qti.hardware.radio.uim_remote_server@1.0.so"
- "lib/vendor.qti.ims.callinfo@1.0.so"
- "lib/vendor.qti.imsrtpservice@1.0-service-Impl.so"
- "lib/vendor.qti.imsrtpservice@1.0.so"
- "lib64/com.qualcomm.qti.imscmservice@1.0.so"
- "lib64/com.qualcomm.qti.uceservice@2.0.so"
- "lib64/com.qualcomm.qti.uceservice@2.1.so"
- "lib64/com.quicinc.cne.api@1.0.so"
- "lib64/com.quicinc.cne.api@1.1.so"
- "lib64/com.quicinc.cne.constants@1.0.so"
- "lib64/com.quicinc.cne.constants@2.0.so"
- "lib64/com.quicinc.cne.constants@2.1.so"
- "lib64/com.quicinc.cne.server@1.0.so"
- "lib64/com.quicinc.cne.server@2.0.so"
- "lib64/com.quicinc.cne.server@2.1.so"
- "lib64/lib-imsdpl.so"
- "lib64/lib-imsqimf.so"
- "lib64/lib-imsrcs-v2.so"
- "lib64/lib-imsxml.so"
- "lib64/lib-rtpcommon.so"
- "lib64/lib-rtpcore.so"
- "lib64/lib-rtpdaemoninterface.so"
- "lib64/lib-rtpsl.so"
- "lib64/lib-uceservice.so"
- "lib64/libcne.so"
- "lib64/libcneapiclient.so"
- "lib64/libcneoplookup.so"
- "lib64/libcneqmiutils.so"
- "lib64/libconfigdb.so"
- "lib64/libdiag.so"
- "lib64/libdsi_netctrl.so"
- "lib64/libdsutils.so"
- "lib64/libidl.so"
- "lib64/liblqe.so"
- "lib64/libmdmdetect.so"
- "lib64/libnetmgr.so"
- "lib64/libpdmapper.so"
- "lib64/libpdnotifier.so"
- "lib64/libqcci_legacy.so"
- "lib64/libqcmaputils.so"
- "lib64/libqcrilFramework.so"
- "lib64/libqdi.so"
- "lib64/libqdp.so"
- "lib64/libqmi.so"
- "lib64/libqmi_cci.so"
- "lib64/libqmi_client_helper.so"
- "lib64/libqmi_client_qmux.so"
- "lib64/libqmi_common_so.so"
- "lib64/libqmi_csi.so"
- "lib64/libqmi_encdec.so"
- "lib64/libqmi_modem_svc.so"
- "lib64/libqmi_thermal-google-1.so"
- "lib64/libqmi_vs-google-1.so"
- "lib64/libqmiservices.so"
- "lib64/libqrtr.so"
- "lib64/libqsocket.so"
- "lib64/libril-qc-hal-qmi.so"
- "lib64/libril-qc-ltedirectdisc.so"
- "lib64/libril-qc-radioconfig.so"
- "lib64/libril-qcril-hook-oem.so"
- "lib64/librilqmiservices.so"
- "lib64/librmnetctl.so"
- "lib64/libsettings.so"
- "lib64/libsystem_health_mon.so"
- "lib64/libwms.so"
- "lib64/libwqe.so"
- "lib64/libxml.so"
- "lib64/qcrild_librilutils.so"
- "lib64/vendor.google.radioext@1.0.so"
- "lib64/vendor.google.radioext@1.1.so"
- "lib64/vendor.google.radioext@1.2.so"
- "lib64/vendor.google.radioext@1.3.so"
- "lib64/vendor.qti.googleext.imsext@1.0.so"
- "lib64/vendor.qti.hardware.data.latency@1.0.so"
- "lib64/vendor.qti.hardware.radio.am@1.0.so"
- "lib64/vendor.qti.hardware.radio.atcmdfwd@1.0.so"
- "lib64/vendor.qti.hardware.radio.ims@1.0.so"
- "lib64/vendor.qti.hardware.radio.ims@1.1.so"
- "lib64/vendor.qti.hardware.radio.ims@1.2.so"
- "lib64/vendor.qti.hardware.radio.ims@1.3.so"
- "lib64/vendor.qti.hardware.radio.ims@1.4.so"
- "lib64/vendor.qti.hardware.radio.internal.deviceinfo@1.0.so"
- "lib64/vendor.qti.hardware.radio.lpa@1.0.so"
- "lib64/vendor.qti.hardware.radio.qcrilhook@1.0.so"
- "lib64/vendor.qti.hardware.radio.qtiradio@1.0.so"
- "lib64/vendor.qti.hardware.radio.qtiradio@2.0.so"
- "lib64/vendor.qti.hardware.radio.qtiradio@2.1.so"
- "lib64/vendor.qti.hardware.radio.qtiradio@2.2.so"
- "lib64/vendor.qti.hardware.radio.uim@1.0.so"
- "lib64/vendor.qti.hardware.radio.uim@1.1.so"
- "lib64/vendor.qti.hardware.radio.uim_remote_client@1.0.so"
- "lib64/vendor.qti.hardware.radio.uim_remote_client@1.1.so"
- "lib64/vendor.qti.hardware.radio.uim_remote_server@1.0.so"
- "lib64/vendor.qti.ims.callinfo@1.0.so"
- "lib64/vendor.qti.imsrtpservice@1.0-service-Impl.so"
- "lib64/vendor.qti.imsrtpservice@1.0.so"
- "radio/qcril_database/qcril.db"
- "radio/qcril_database/upgrade/0_initial.sql"
- "radio/qcril_database/upgrade/10_remove_germany_hard_ecc_110.sql"
- "radio/qcril_database/upgrade/11_israel_normal_ecc.sql"
- "radio/qcril_database/upgrade/12_brazil_ecc.sql"
- "radio/qcril_database/upgrade/13_show_emer_ui_in_india.sql"
- "radio/qcril_database/upgrade/1_version_intro.sql"
- "radio/qcril_database/upgrade/2_version_add_wps_config.sql"
- "radio/qcril_database/upgrade/3_version_google_feature.sql"
- "radio/qcril_database/upgrade/3_version_update_wps_config.sql"
- "radio/qcril_database/upgrade/4_version_google_feature.sql"
- "radio/qcril_database/upgrade/5_recheck_ecc_setting.sql"
- "radio/qcril_database/upgrade/6_remove_unnecessary_entry.sql"
- "radio/qcril_database/upgrade/7_singapore_ecc_995.sql"
- "radio/qcril_database/upgrade/8_germany_ecc_110.sql"
- "radio/qcril_database/upgrade/9_remove_germany_ecc_110.sql"
-
- # Wi-Fi
- "lib/libcld80211.so"
- "lib/libwifi-hal-ctrl.so"
- "lib/libwifi-hal-qcom.so"
- "lib64/libwifi-hal-ctrl.so"
- "lib64/libwifi-hal-qcom.so"
-
- # Wi-Fi service
- "bin/hw/vendor.google.wifi_ext@1.0-service-vendor"
- "etc/init/vendor.google.wifi_ext@1.0-service.rc"
- "etc/vintf/manifest/manifest_wifi_ext.xml"
- "lib64/google_wifi_firmware_config_info_cc_proto.so"
- "lib64/vendor.google.wifi_ext@1.1.so"
- "lib64/vendor.google.wifi_ext@1.2.so"
-
- # Misc interfaces
- "lib/android.frameworks.sensorservice@1.0.so"
- "lib/android.hardware.gatekeeper@1.0.so"
- "lib/android.hardware.keymaster@3.0.so"
- "lib/android.hardware.keymaster@4.0.so"
- "lib/android.hardware.sensors@1.0.so"
- "lib/android.hardware.sensors@2.0.so"
- "lib64/android.frameworks.stats@1.0.so"
- "lib64/android.hardware.authsecret@1.0.so"
- "lib64/android.hardware.biometrics.fingerprint@2.1.so"
- "lib64/android.hardware.biometrics.fingerprint@2.2.so"
- "lib64/android.hardware.gatekeeper@1.0.so"
- "lib64/android.hardware.neuralnetworks@1.0.so"
- "lib64/android.hardware.neuralnetworks@1.1.so"
- "lib64/android.hardware.neuralnetworks@1.2.so"
- "lib64/android.hardware.neuralnetworks@1.3.so"
- "lib64/android.hardware.oemlock@1.0.so"
- "lib64/android.hardware.radio.config@1.0.so"
- "lib64/android.hardware.radio.config@1.1.so"
- "lib64/android.hardware.radio.deprecated@1.0.so"
- "lib64/android.hardware.radio@1.2.so"
- "lib64/android.hardware.radio@1.3.so"
- "lib64/android.hardware.sensors@2.0.so"
- "lib64/android.hardware.weaver@1.0.so"
- "lib64/android.system.net.netd@1.0.so"
- "lib64/android.system.net.netd@1.1.so"
-
- # Completely skip files that are not required
-
- # Cryptfshw
- "etc/init/vendor.qti.hardware.cryptfshw@1.0-service-qti.rc"
- "lib/libcryptfshwcommon.so"
- "lib/vendor.qti.hardware.cryptfshw@1.0.so"
- "lib64/libcryptfshwcommon.so"
- "lib64/vendor.qti.hardware.cryptfshw@1.0.so"
-
- # Display
- "lib/libdisplayconfig.so"
- "lib64/libdisplayconfig.so"
-
- # Google battery
- "bin/hw/vendor.google.google_battery@1.1-service-vendor"
- "etc/init/vendor.google.google_battery@1.1-service.rc"
- "lib64/vendor.google.google_battery@1.0.so"
- "lib64/vendor.google.google_battery@1.1.so"
-
- # IOP
- "lib/vendor.qti.hardware.iop@1.0.so"
- "lib64/vendor.qti.hardware.iop@1.0.so"
-
- # Perf
- "lib/vendor.qti.hardware.perf@1.0.so"
- "lib/vendor.qti.hardware.perf@2.0.so"
- "lib64/vendor.qti.hardware.perf@1.0.so"
- "lib64/vendor.qti.hardware.perf@2.0.so"
-
- # Test mapping
- "firmware/TEST_MAPPING"
-)
-
-# Initialize the helper
-setup_vendor_deps "${ANDROID_ROOT}"
-
-generate_prop_list_from_image "${_input_image}" "${_output_file}" VENDOR_SKIP_FILES
-
-# Fixups
-function presign() {
- sed -i "s|vendor/${1}$|vendor/${1};PRESIGNED|g" "${_output_file}"
-}
-
-function symlink() {
- sed -i "s|vendor/${1}$|vendor/${1};SYMLINK=${2}|g" "${_output_file}"
-}
-
-function as_module() {
- sed -i "s|vendor/${1}$|-vendor/${1}|g" "${_output_file}"
-}
-
-function header() {
- sed -i "1s/^/${1}\n/" "${_output_file}"
-}
-
-symlink "lib/egl/libEGL_adreno.so" "vendor/lib/libEGL_adreno.so"
-symlink "lib/egl/libGLESv2_adreno.so" "vendor/lib/libGLESv2_adreno.so"
-symlink "lib/egl/libq3dtools_adreno.so" "vendor/lib/libq3dtools_adreno.so"
-symlink "lib64/egl/libEGL_adreno.so" "vendor/lib64/libEGL_adreno.so"
-symlink "lib64/egl/libGLESv2_adreno.so" "vendor/lib64/libGLESv2_adreno.so"
-symlink "lib64/egl/libq3dtools_adreno.so" "vendor/lib64/libq3dtools_adreno.so"
-
-as_module "lib/libbtnv.so"
-as_module "lib/libadsprpc.so"
-as_module "lib/libMpeg4SwEncoder.so"
-as_module "lib64/libbtnv.so"
-as_module "lib64/libadsprpc.so"
-as_module "lib64/libMpeg4SwEncoder.so"
-
-header "# All blobs are extracted from Google factory images for each new ASB"
diff --git a/sargo/setup-makefiles.py b/sargo/setup-makefiles.py
new file mode 100755
index 00000000..32947cfe
--- /dev/null
+++ b/sargo/setup-makefiles.py
@@ -0,0 +1 @@
+#!./extract-files.py --regenerate_makefiles
diff --git a/sargo/setup-makefiles.sh b/sargo/setup-makefiles.sh
deleted file mode 100755
index b41bb94e..00000000
--- a/sargo/setup-makefiles.sh
+++ /dev/null
@@ -1,41 +0,0 @@
-#!/bin/bash
-#
-# Copyright (C) 2016 The CyanogenMod Project
-# Copyright (C) 2017-2023 The LineageOS Project
-#
-# SPDX-License-Identifier: Apache-2.0
-#
-
-set -e
-
-DEVICE=sargo
-VENDOR=google
-
-# Load extract_utils and do some sanity checks
-MY_DIR="${BASH_SOURCE%/*}"
-if [[ ! -d "${MY_DIR}" ]]; then MY_DIR="${PWD}"; fi
-
-ANDROID_ROOT="${MY_DIR}/../../../.."
-
-HELPER="${ANDROID_ROOT}/tools/extract-utils/extract_utils.sh"
-if [ ! -f "${HELPER}" ]; then
- echo "Unable to find helper script at ${HELPER}"
- exit 1
-fi
-source "${HELPER}"
-
-# Initialize the helper
-setup_vendor "${DEVICE}" "${VENDOR}" "${ANDROID_ROOT}"
-
-# Warning headers and guards
-write_headers
-
-write_makefiles "${MY_DIR}/proprietary-files.txt" true
-write_makefiles "${MY_DIR}/proprietary-files-carriersettings.txt" true
-write_makefiles "${MY_DIR}/proprietary-files-radio.txt" true
-write_makefiles "${MY_DIR}/proprietary-files-vendor.txt" true
-
-append_firmware_calls_to_makefiles "${MY_DIR}/proprietary-firmware.txt"
-
-# Finish
-write_footers
diff --git a/sdm710/thermal-engine/Android.mk b/sdm710/thermal-engine/Android.mk
deleted file mode 100644
index c54c59f0..00000000
--- a/sdm710/thermal-engine/Android.mk
+++ /dev/null
@@ -1,6 +0,0 @@
-################################################################################
-# @file device/qcom/common/thermal-engine/Android.mk
-# @Makefile for installing thermal-engine client header on Android.
-################################################################################
-
-LOCAL_PATH:= $(call my-dir)
diff --git a/sdm710/thermal-engine/thermal_client.h b/sdm710/thermal-engine/thermal_client.h
deleted file mode 100644
index b41f1394..00000000
--- a/sdm710/thermal-engine/thermal_client.h
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Copyright (c) 2016, The Linux Foundation. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- * * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- * * Neither the name of The Linux Foundation nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
- * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
- * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include <cutils/properties.h>
-#ifndef __THERMAL_CLIENT_H__
-#define __THERMAL_CLIENT_H__
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define MAX_ACTIONS (32)
-
-/* Enum for supported fields */
-enum supported_fields {
- UNKNOWN_FIELD = 0x0,
- DISABLE_FIELD = 0x1,
- SAMPLING_FIELD = 0x2,
- THRESHOLDS_FIELD = 0x4,
- SET_POINT_FIELD = THRESHOLDS_FIELD,
- THRESHOLDS_CLR_FIELD = 0x8,
- SET_POINT_CLR_FIELD = THRESHOLDS_CLR_FIELD,
- ACTION_INFO_FIELD = 0x10,
- SUPPORTED_FIELD_MAX = 0x20,
-};
-
-enum field_data_type {
- FIELD_INT = 0,
- FIELD_STR,
- FIELD_INT_ARR,
- FIELD_ARR_STR,
- FIELD_ARR_INT_ARR,
- FIELD_MAX
-};
-
-struct action_info_data {
- int info[MAX_ACTIONS];
- uint32_t num_actions;
-};
-
-struct field_data {
- char *field_name;
- enum field_data_type data_type;
- uint32_t num_data;
- void *data;
-};
-
-struct config_instance {
- char *cfg_desc;
- char *algo_type;
- unsigned int fields_mask; /* mask set by client to request to adjust supported fields */
- uint32_t num_fields;
- struct field_data *fields;
-};
-
-int thermal_client_config_query(char *algo_type, struct config_instance **configs);
-void thermal_client_config_cleanup(struct config_instance *configs, unsigned int config_size);
-int thermal_client_config_set(struct config_instance *configs, unsigned int config_size);
-
-int thermal_client_register_callback(char *client_name, int (*callback)(int , void *, void *), void *data);
-int thermal_client_request(char *client_name, int req_data);
-void thermal_client_unregister_callback(int client_cb_handle);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __THERMAL_CLIENT_H__ */
diff --git a/seccomp_policy/mediacodec.policy b/seccomp_policy/mediacodec.policy
deleted file mode 100644
index 07b7bf70..00000000
--- a/seccomp_policy/mediacodec.policy
+++ /dev/null
@@ -1,9 +0,0 @@
-# device specific syscalls
-pselect6: 1
-eventfd2: 1
-sendto: 1
-recvfrom: 1
-_llseek: 1
-sysinfo: 1
-getcwd: 1
-getdents64: 1
diff --git a/self-extractors/Android.mk b/self-extractors/Android.mk
deleted file mode 100644
index e69de29b..00000000
--- a/self-extractors/Android.mk
+++ /dev/null
diff --git a/self-extractors/google_devices/staging/Android.mk b/self-extractors/google_devices/staging/Android.mk.template
index 5caef362..5caef362 100644
--- a/self-extractors/google_devices/staging/Android.mk
+++ b/self-extractors/google_devices/staging/Android.mk.template
diff --git a/self-extractors/qcom/staging/Android.mk b/self-extractors/qcom/staging/Android.mk.template
index 510d07a7..510d07a7 100644
--- a/self-extractors/qcom/staging/Android.mk
+++ b/self-extractors/qcom/staging/Android.mk.template
diff --git a/self-extractors_sargo/Android.mk b/self-extractors_sargo/Android.mk
deleted file mode 100644
index e69de29b..00000000
--- a/self-extractors_sargo/Android.mk
+++ /dev/null
diff --git a/self-extractors_sargo/google_devices/staging/Android.mk b/self-extractors_sargo/google_devices/staging/Android.mk.template
index 814ce95d..814ce95d 100644
--- a/self-extractors_sargo/google_devices/staging/Android.mk
+++ b/self-extractors_sargo/google_devices/staging/Android.mk.template
diff --git a/self-extractors_sargo/qcom/staging/Android.mk b/self-extractors_sargo/qcom/staging/Android.mk.template
index 346dc40c..346dc40c 100644
--- a/self-extractors_sargo/qcom/staging/Android.mk
+++ b/self-extractors_sargo/qcom/staging/Android.mk.template
diff --git a/sepolicy/vendor/qcom/common/file.te b/sepolicy/vendor/qcom/common/file.te
index 48047a39..4662b20b 100644
--- a/sepolicy/vendor/qcom/common/file.te
+++ b/sepolicy/vendor/qcom/common/file.te
@@ -1,3 +1,4 @@
+type sysfs_battery_supply, sysfs_type, fs_type;
type sysfs_camera, sysfs_type, fs_type;
type sysfs_devfreq, fs_type, sysfs_type;
type sysfs_easel, sysfs_type, fs_type;
@@ -31,6 +32,7 @@ type sysfs_rpm, sysfs_type, fs_type;
type sysfs_wlc, sysfs_type, fs_type;
type sysfs_esim, sysfs_type, fs_type;
type sysfs_wifi_conmode, sysfs_type, fs_type;
+type sysfs_kgsl_proc, sysfs_type, fs_type;
type debugfs_clk, debugfs_type, fs_type;
type debugfs_ion, debugfs_type, fs_type;
diff --git a/sepolicy/vendor/qcom/common/file_contexts b/sepolicy/vendor/qcom/common/file_contexts
index 9b90a7bc..8338bc14 100644
--- a/sepolicy/vendor/qcom/common/file_contexts
+++ b/sepolicy/vendor/qcom/common/file_contexts
@@ -122,7 +122,7 @@
/vendor/bin/cnd u:object_r:cnd_exec:s0
/vendor/bin/easelmanagerd u:object_r:easel_exec:s0
/vendor/bin/hw/android\.hardware\.usb@1\.3-service\.bonito u:object_r:hal_usb_impl_exec:s0
-/vendor/bin/chre u:object_r:chre_exec:s0
+/vendor/bin/chre_daemon_msm u:object_r:chre_exec:s0
/vendor/bin/time_daemon u:object_r:time_daemon_exec:s0
/vendor/bin/tcpdump_logger u:object_r:tcpdump_logger_exec:s0
/vendor/bin/imsrcsd u:object_r:hal_rcsservice_exec:s0
@@ -154,6 +154,8 @@
/vendor/bin/hw/vendor\.qti\.hardware\.display\.allocator@1\.0-service u:object_r:hal_graphics_allocator_default_exec:s0
/vendor/bin/hw/vendor\.google\.wireless_charger@1\.0-service-vendor u:object_r:hal_wlc_exec:s0
/vendor/bin/hw/hardware\.google\.light@1\.0-service u:object_r:hal_light_default_exec:s0
+/vendor/bin/hw/vendor\.qti.hardware\.memtrack-service u:object_r:hal_memtrack_default_exec:s0
+/vendor/bin/hw/android\.hardware\.boot-service\.qti u:object_r:hal_bootctl_default_exec:s0
###############################################
# same-process HAL files and their dependencies
diff --git a/sepolicy/vendor/qcom/common/genfs_contexts b/sepolicy/vendor/qcom/common/genfs_contexts
index cf789191..57d7ee77 100644
--- a/sepolicy/vendor/qcom/common/genfs_contexts
+++ b/sepolicy/vendor/qcom/common/genfs_contexts
@@ -34,6 +34,7 @@ genfscon sysfs /devices/platform/soc/1d84000.ufshc/slowio_unmap_cnt u:o
genfscon sysfs /devices/platform/soc/1d84000.ufshc/slowio_sync_cnt u:object_r:sysfs_scsi_devices_0000:s0
genfscon sysfs /class/uio u:object_r:sysfs_uio:s0
+genfscon sysfs /devices/virtual/kgsl/kgsl/proc u:object_r:sysfs_kgsl_proc:s0
genfscon sysfs /devices/platform/soc/894000.i2c u:object_r:sysfs_msm_subsys:s0
genfscon sysfs /devices/platform/soc/soc:qcom,gpubw u:object_r:sysfs_msm_subsys:s0
genfscon sysfs /devices/platform/soc/c440000.qcom,spmi u:object_r:sysfs_msm_subsys:s0
diff --git a/sepolicy/vendor/qcom/common/hal_fingerprint.te b/sepolicy/vendor/qcom/common/hal_fingerprint.te
index 0f8d65cc..75b485bc 100644
--- a/sepolicy/vendor/qcom/common/hal_fingerprint.te
+++ b/sepolicy/vendor/qcom/common/hal_fingerprint.te
@@ -5,11 +5,11 @@ allow hal_fingerprint sysfs_msm_subsys:file r_file_perms;
allow hal_fingerprint sysfs_camera:dir search;
allow hal_fingerprint sysfs_camera:file r_file_perms;
allow hal_fingerprint sysfs_leds:dir search;
-allow hal_fingerprint sysfs_leds:file r_file_perms;
+allow { hal_fingerprint -coredomain } sysfs_leds:file r_file_perms;
allow hal_fingerprint sysfs_pinctrl:dir search;
allow hal_fingerprint sysfs_pinctrl:file r_file_perms;
allow hal_fingerprint tee_device:file rw_file_perms;
-allow hal_fingerprint tee_device:chr_file rw_file_perms;
+allow { hal_fingerprint -coredomain } tee_device:chr_file rw_file_perms;
allow hal_fingerprint uhid_device:chr_file rw_file_perms;
diff --git a/sepolicy/vendor/qcom/common/hal_lineage_health_default.te b/sepolicy/vendor/qcom/common/hal_lineage_health_default.te
new file mode 100644
index 00000000..3e05511a
--- /dev/null
+++ b/sepolicy/vendor/qcom/common/hal_lineage_health_default.te
@@ -0,0 +1 @@
+allow hal_lineage_health_default sysfs_msm_subsys:dir search;
diff --git a/sepolicy/vendor/qcom/common/hal_memtrack_default.te b/sepolicy/vendor/qcom/common/hal_memtrack_default.te
index 4ffa74c2..4882eca2 100644
--- a/sepolicy/vendor/qcom/common/hal_memtrack_default.te
+++ b/sepolicy/vendor/qcom/common/hal_memtrack_default.te
@@ -1 +1,2 @@
-allow hal_memtrack_default debugfs_kgsl:file { open read getattr };
+allow hal_memtrack_default sysfs_kgsl_proc:file r_file_perms;
+allow hal_memtrack_default sysfs_kgsl_proc:dir search;
diff --git a/setup-makefiles.py b/setup-makefiles.py
new file mode 100755
index 00000000..c98616b6
--- /dev/null
+++ b/setup-makefiles.py
@@ -0,0 +1,13 @@
+#!/bin/bash
+#
+# SPDX-FileCopyrightText: 2024 The LineageOS Project
+# SPDX-License-Identifier: Apache-2.0
+#
+
+set -e
+
+MY_DIR="$(cd "$(dirname "${0}")"; pwd -P)"
+
+pushd "${MY_DIR}/bonito"
+./setup-makefiles.py
+popd
diff --git a/ueventd.hardware.rc b/ueventd.hardware.rc
index 1747a0b9..196b3a8d 100644
--- a/ueventd.hardware.rc
+++ b/ueventd.hardware.rc
@@ -130,3 +130,7 @@ firmware_directories /vendor/firmware_mnt/image/
# socinfo
/sys/devices/soc0 serial_number 0000 root root
+
+# Charger
+/sys/class/power_supply/battery charge_disable 0660 system system
+/sys/devices/platform/soc/c440000.qcom,spmi/spmi-0/spmi0-00/c440000.qcom,spmi:qcom,pm660@0:qcom,qpnp-smb2/power_supply/battery charge_disable 0660 system system