forked from openkylin/platform_build
auto import from //branches/cupcake/...@127101
This commit is contained in:
parent
66339ad5ce
commit
ed18741e07
|
@ -58,6 +58,8 @@ INTERNAL_CLEAN_BUILD_VERSION := 2
|
|||
$(call add-clean-step, rm -f $(PRODUCT_OUT)/system/etc/NOTICE.html)
|
||||
# Remove generated java files after CL 126153
|
||||
$(call add-clean-step, find $(OUT_DIR) -type f -name "*.java" -print0 | xargs -0 rm -f)
|
||||
$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/framework_intermediates)
|
||||
$(call add-clean-step, rm -rf $(OUT_DIR)/target/product/sapphire/obj/SHARED_LIBRARIES/libhardware_legacy_intermediates/led)
|
||||
|
||||
# ************************************************
|
||||
# NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST
|
||||
|
|
|
@ -809,6 +809,11 @@ define package_files-copy-root
|
|||
fi
|
||||
endef
|
||||
|
||||
built_ota_tools := \
|
||||
$(hide) $(ACP) $(call intermediates-dir-for,EXECUTABLES,applypatch)/applypatch \
|
||||
$(hide) $(ACP) $(call intermediates-dir-for,EXECUTABLES,check_prereq)/check_prereq
|
||||
$(BUILT_TARGET_FILES_PACKAGE): PRIVATE_OTA_TOOLS := $(built_ota_tools)
|
||||
|
||||
# Depending on the various images guarantees that the underlying
|
||||
# directories are up-to-date.
|
||||
$(BUILT_TARGET_FILES_PACKAGE): \
|
||||
|
@ -820,6 +825,7 @@ $(BUILT_TARGET_FILES_PACKAGE): \
|
|||
$(INSTALLED_USERDATAIMAGE_TARGET) \
|
||||
$(INSTALLED_ANDROID_INFO_TXT_TARGET) \
|
||||
$(INTERNAL_OTA_SCRIPT_TARGET) \
|
||||
$(built_ota_tools) \
|
||||
$(APKCERTS_FILE) \
|
||||
| $(ACP)
|
||||
@echo "Package target files: $@"
|
||||
|
@ -865,10 +871,11 @@ endif
|
|||
$(hide) $(call package_files-copy-root, \
|
||||
$(TARGET_OUT_DATA),$(zip_root)/DATA)
|
||||
@# Extra contents of the OTA package
|
||||
$(hide) mkdir -p $(zip_root)/OTA
|
||||
$(hide) mkdir -p $(zip_root)/OTA/bin
|
||||
$(hide) $(call package_files-copy-root, \
|
||||
$(INTERNAL_OTA_INTERMEDIATES_DIR),$(zip_root)/OTA)
|
||||
$(hide) $(ACP) $(INSTALLED_ANDROID_INFO_TXT_TARGET) $(zip_root)/OTA/
|
||||
$(hide) $(ACP) $(PRIVATE_OTA_TOOLS) $(zip_root)/OTA/bin/
|
||||
@# Files that don't end up in any images, but are necessary to
|
||||
@# build them.
|
||||
$(hide) mkdir -p $(zip_root)/META
|
||||
|
|
|
@ -243,15 +243,9 @@ endef
|
|||
###########################################################
|
||||
|
||||
define find-subdir-assets
|
||||
$(if $(1),\
|
||||
$(patsubst ./%,%, $(foreach dir,$(1),\
|
||||
$(shell if [ -d $(dir) ] ; then\
|
||||
cd $(dir) ; find ./ -type f -and -not -type l ;\
|
||||
fi \
|
||||
) \
|
||||
)) \
|
||||
, \
|
||||
$(warning Empty argument supplied to find-subdir-assets) \
|
||||
$(if $(1),$(patsubst ./%,%, \
|
||||
$(shell if [ -d $(1) ] ; then cd $(1) ; find ./ -type f -and -not -type l ; fi)), \
|
||||
$(warning Empty argument supplied to find-subdir-assets) \
|
||||
)
|
||||
endef
|
||||
|
||||
|
|
|
@ -65,9 +65,11 @@ LOCAL_ASSET_DIR := $(LOCAL_PATH)/assets
|
|||
endif
|
||||
|
||||
ifeq (,$(LOCAL_RESOURCE_DIR))
|
||||
LOCAL_RESOURCE_DIR := $(wildcard $(addsuffix /$(LOCAL_PATH)/res, $(PRODUCT_PACKAGE_OVERLAYS))) \
|
||||
$(LOCAL_PATH)/res
|
||||
LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
|
||||
endif
|
||||
LOCAL_RESOURCE_DIR := \
|
||||
$(wildcard $(addsuffix /$(LOCAL_RESOURCE_DIR), $(PRODUCT_PACKAGE_OVERLAYS))) \
|
||||
$(LOCAL_RESOURCE_DIR)
|
||||
|
||||
# this is an app, so add the system libraries to the search path
|
||||
LOCAL_AIDL_INCLUDES += $(FRAMEWORKS_BASE_JAVA_SRC_DIRS)
|
||||
|
@ -77,8 +79,14 @@ LOCAL_AIDL_INCLUDES += $(FRAMEWORKS_BASE_JAVA_SRC_DIRS)
|
|||
all_assets := $(call find-subdir-assets,$(LOCAL_ASSET_DIR))
|
||||
all_assets := $(addprefix $(LOCAL_ASSET_DIR)/,$(patsubst assets/%,%,$(all_assets)))
|
||||
|
||||
all_resources := $(call find-subdir-assets,$(LOCAL_RESOURCE_DIR))
|
||||
all_resources := $(addprefix $(LOCAL_RESOURCE_DIR)/,$(patsubst res/%,%,$(all_resources)))
|
||||
all_resources := $(strip \
|
||||
$(foreach dir, $(LOCAL_RESOURCE_DIR), \
|
||||
$(addprefix $(dir)/, \
|
||||
$(patsubst res/%,%, \
|
||||
$(call find-subdir-assets,$(dir)) \
|
||||
) \
|
||||
) \
|
||||
))
|
||||
|
||||
all_res_assets := $(strip $(all_assets) $(all_resources))
|
||||
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
|
||||
PRODUCT_MAKEFILES := \
|
||||
$(LOCAL_DIR)/generic.mk \
|
||||
$(LOCAL_DIR)/min_dev.mk \
|
||||
$(LOCAL_DIR)/sdk.mk \
|
||||
$(LOCAL_DIR)/sim.mk \
|
||||
$(LOCAL_DIR)/generic_with_google.mk
|
||||
|
|
|
@ -18,5 +18,6 @@ PRODUCT_PACKAGES := \
|
|||
MediaProvider \
|
||||
SettingsProvider \
|
||||
TelephonyProvider \
|
||||
UserDictionaryProvider \
|
||||
PackageInstaller \
|
||||
Bugreport
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
|
||||
PRODUCT_POLICY := android.policy_phone
|
||||
PRODUCT_PROPERTY_OVERRIDES := \
|
||||
ro.config.notification_sound=F1_New_SMS.ogg
|
||||
PRODUCT_BRAND := generic
|
||||
PRODUCT_NAME := min_dev
|
||||
PRODUCT_DEVICE := generic
|
||||
|
||||
PRODUCT_PACKAGES := \
|
||||
DownloadProvider \
|
||||
MediaProvider \
|
||||
SettingsProvider \
|
||||
PackageInstaller \
|
||||
Bugreport \
|
||||
Launcher \
|
||||
Settings \
|
||||
sqlite3
|
||||
|
|
@ -17,12 +17,12 @@ include $(CLEAR_VARS)
|
|||
|
||||
ifneq ($(TARGET_SIMULATOR),true)
|
||||
|
||||
LOCAL_SRC_FILES := applypatch.c xdelta3.c bsdiff.c freecache.c
|
||||
LOCAL_SRC_FILES := applypatch.c bsdiff.c freecache.c
|
||||
LOCAL_MODULE := applypatch
|
||||
LOCAL_FORCE_STATIC_EXECUTABLE := true
|
||||
LOCAL_MODULE_TAGS := eng
|
||||
LOCAL_C_INCLUDES += external/xdelta3 external/bzip2
|
||||
LOCAL_STATIC_LIBRARIES += libxdelta3 libmincrypt libbz libc
|
||||
LOCAL_C_INCLUDES += external/bzip2
|
||||
LOCAL_STATIC_LIBRARIES += libmincrypt libbz libc
|
||||
|
||||
include $(BUILD_EXECUTABLE)
|
||||
|
||||
|
|
|
@ -1,20 +1,17 @@
|
|||
/*
|
||||
* Copyright (C) 2008 The Android Open Source Project
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
* 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
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301, USA.
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#include <errno.h>
|
||||
|
@ -209,24 +206,6 @@ int CheckMode(int argc, char** argv) {
|
|||
}
|
||||
|
||||
int ShowLicenses() {
|
||||
puts("\nCopyright (C) 2008 The Android Open Source Project\n"
|
||||
"\n"
|
||||
"This program is free software; you can redistribute it and/or\n"
|
||||
"modify it under the terms of the GNU General Public License\n"
|
||||
"as published by the Free Software Foundation; either version 2\n"
|
||||
"of the License, or (at your option) any later version.\n"
|
||||
"\n"
|
||||
"This program is distributed in the hope that it will be useful,\n"
|
||||
"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
|
||||
"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
|
||||
"GNU General Public License for more details.\n"
|
||||
"\n"
|
||||
"You should have received a copy of the GNU General Public License\n"
|
||||
"along with this program; if not, write to the Free Software\n"
|
||||
"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA\n"
|
||||
"02110-1301, USA.\n"
|
||||
"\n------------------\n"
|
||||
);
|
||||
ShowBSDiffLicense();
|
||||
return 0;
|
||||
}
|
||||
|
@ -251,10 +230,10 @@ size_t FreeSpaceForFile(const char* filename) {
|
|||
// successfully.
|
||||
//
|
||||
// - otherwise, if the sha1 hash of <file> is <src-sha1>, applies the
|
||||
// xdelta3 or bsdiff <patch> to <file> to produce a new file (the
|
||||
// type of patch is automatically detected from the file header).
|
||||
// If that new file has sha1 hash <tgt-sha1>, moves it to replace
|
||||
// <file>, and exits successfully.
|
||||
// bsdiff <patch> to <file> to produce a new file (the type of patch
|
||||
// is automatically detected from the file header). If that new
|
||||
// file has sha1 hash <tgt-sha1>, moves it to replace <file>, and
|
||||
// exits successfully.
|
||||
//
|
||||
// - otherwise, or if any error is encountered, exits with non-zero
|
||||
// status.
|
||||
|
@ -426,12 +405,8 @@ int main(int argc, char** argv) {
|
|||
header[2] == 0xc4 && header[3] == 0) {
|
||||
// xdelta3 patches begin "VCD" (with the high bits set) followed
|
||||
// by a zero byte (the version number).
|
||||
int result = ApplyXDelta3Patch(source_to_use->data, source_to_use->size,
|
||||
patch_filename, output, &ctx);
|
||||
if (result != 0) {
|
||||
fprintf(stderr, "ApplyXDelta3Patch failed\n");
|
||||
return result;
|
||||
}
|
||||
fprintf(stderr, "error: xdelta3 patches no longer supported\n");
|
||||
return 1;
|
||||
} else if (header_bytes_read >= 8 &&
|
||||
memcmp(header, "BSDIFF40", 8) == 0) {
|
||||
int result = ApplyBSDiffPatch(source_to_use->data, source_to_use->size,
|
||||
|
|
|
@ -1,20 +1,17 @@
|
|||
/*
|
||||
* Copyright (C) 2008 The Android Open Source Project
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
* 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
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301, USA.
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef _APPLYPATCH_H
|
||||
|
@ -44,11 +41,6 @@ typedef struct _FileContents {
|
|||
// applypatch.c
|
||||
size_t FreeSpaceForFile(const char* filename);
|
||||
|
||||
// xdelta3.c
|
||||
int ApplyXDelta3Patch(const unsigned char* old_data, ssize_t old_size,
|
||||
const char* patch_filename,
|
||||
FILE* output, SHA_CTX* ctx);
|
||||
|
||||
// bsdiff.c
|
||||
void ShowBSDiffLicense();
|
||||
int ApplyBSDiffPatch(const unsigned char* old_data, ssize_t old_size,
|
||||
|
|
|
@ -128,7 +128,7 @@ run_command $WORK_DIR/applypatch -c $WORK_DIR/old.file $BAD2_SHA1 $BAD1_SHA1 &&
|
|||
# --------------- apply patch ----------------------
|
||||
|
||||
$ADB push $DATA_DIR/old.file $WORK_DIR
|
||||
$ADB push $DATA_DIR/patch.xdelta3 $WORK_DIR
|
||||
$ADB push $DATA_DIR/patch.bsdiff $WORK_DIR
|
||||
|
||||
# Check that the partition has enough space to apply the patch without
|
||||
# copying. If it doesn't, we'll be testing the low-space condition
|
||||
|
@ -145,19 +145,6 @@ if (( free_kb * 1024 < NEW_SIZE * 3 / 2 )); then
|
|||
exit 1
|
||||
fi
|
||||
|
||||
testname "apply xdelta3 patch"
|
||||
run_command $WORK_DIR/applypatch $WORK_DIR/old.file $NEW_SHA1 $NEW_SIZE $BAD1_SHA1:$WORK_DIR/foo $OLD_SHA1:$WORK_DIR/patch.xdelta3 || fail
|
||||
$ADB pull $WORK_DIR/old.file $tmpdir/patched
|
||||
diff -q $DATA_DIR/new.file $tmpdir/patched || fail
|
||||
|
||||
testname "reapply xdelta3 patch"
|
||||
run_command $WORK_DIR/applypatch $WORK_DIR/old.file $NEW_SHA1 $NEW_SIZE $BAD1_SHA1:$WORK_DIR/foo $OLD_SHA1:$WORK_DIR/patch.xdelta3 || fail
|
||||
$ADB pull $WORK_DIR/old.file $tmpdir/patched
|
||||
diff -q $DATA_DIR/new.file $tmpdir/patched || fail
|
||||
|
||||
$ADB push $DATA_DIR/old.file $WORK_DIR
|
||||
$ADB push $DATA_DIR/patch.bsdiff $WORK_DIR
|
||||
|
||||
testname "apply bsdiff patch"
|
||||
run_command $WORK_DIR/applypatch $WORK_DIR/old.file $NEW_SHA1 $NEW_SIZE $BAD1_SHA1:$WORK_DIR/foo $OLD_SHA1:$WORK_DIR/patch.bsdiff || fail
|
||||
$ADB pull $WORK_DIR/old.file $tmpdir/patched
|
||||
|
@ -172,7 +159,6 @@ diff -q $DATA_DIR/new.file $tmpdir/patched || fail
|
|||
# --------------- apply patch with low space on /system ----------------------
|
||||
|
||||
$ADB push $DATA_DIR/old.file $WORK_DIR
|
||||
$ADB push $DATA_DIR/patch.xdelta3 $WORK_DIR
|
||||
$ADB push $DATA_DIR/patch.bsdiff $WORK_DIR
|
||||
|
||||
free_kb=$(free_space $WORK_FS)
|
||||
|
@ -182,18 +168,6 @@ run_command dd if=/dev/zero of=$WORK_DIR/bloat.dat count=$((free_kb-512)) bs=102
|
|||
free_kb=$(free_space $WORK_FS)
|
||||
echo "${free_kb}kb free on /$WORK_FS now."
|
||||
|
||||
testname "apply xdelta3 patch with low space"
|
||||
run_command $WORK_DIR/applypatch $WORK_DIR/old.file $NEW_SHA1 $NEW_SIZE $BAD1_SHA1:$WORK_DIR/foo $OLD_SHA1:$WORK_DIR/patch.xdelta3 || fail
|
||||
$ADB pull $WORK_DIR/old.file $tmpdir/patched
|
||||
diff -q $DATA_DIR/new.file $tmpdir/patched || fail
|
||||
|
||||
testname "reapply xdelta3 patch with low space"
|
||||
run_command $WORK_DIR/applypatch $WORK_DIR/old.file $NEW_SHA1 $NEW_SIZE $BAD1_SHA1:$WORK_DIR/foo $OLD_SHA1:$WORK_DIR/patch.xdelta3 || fail
|
||||
$ADB pull $WORK_DIR/old.file $tmpdir/patched
|
||||
diff -q $DATA_DIR/new.file $tmpdir/patched || fail
|
||||
|
||||
$ADB push $DATA_DIR/old.file $WORK_DIR
|
||||
|
||||
testname "apply bsdiff patch with low space"
|
||||
run_command $WORK_DIR/applypatch $WORK_DIR/old.file $NEW_SHA1 $NEW_SIZE $BAD1_SHA1:$WORK_DIR/foo $OLD_SHA1:$WORK_DIR/patch.bsdiff || fail
|
||||
$ADB pull $WORK_DIR/old.file $tmpdir/patched
|
||||
|
@ -207,7 +181,6 @@ diff -q $DATA_DIR/new.file $tmpdir/patched || fail
|
|||
# --------------- apply patch with low space on /system and /cache ----------------------
|
||||
|
||||
$ADB push $DATA_DIR/old.file $WORK_DIR
|
||||
$ADB push $DATA_DIR/patch.xdelta3 $WORK_DIR
|
||||
$ADB push $DATA_DIR/patch.bsdiff $WORK_DIR
|
||||
|
||||
free_kb=$(free_space $WORK_FS)
|
||||
|
@ -216,7 +189,7 @@ echo "${free_kb}kb free on /$WORK_FS"
|
|||
run_command mkdir /cache/subdir
|
||||
run_command 'echo > /cache/subdir/a.file'
|
||||
run_command 'echo > /cache/a.file'
|
||||
run_command mkdir -p /cache/recovery/otatest
|
||||
run_command mkdir /cache/recovery /cache/recovery/otatest
|
||||
run_command 'echo > /cache/recovery/otatest/b.file'
|
||||
run_command "echo > $CACHE_TEMP_SOURCE"
|
||||
free_kb=$(free_space cache)
|
||||
|
@ -268,8 +241,8 @@ $ADB push $DATA_DIR/old.file $CACHE_TEMP_SOURCE
|
|||
# put some junk in the old file
|
||||
run_command dd if=/dev/urandom of=$WORK_DIR/old.file count=100 bs=1024 || fail
|
||||
|
||||
testname "apply xdelta3 patch from cache (corrupted source) with low space"
|
||||
run_command $WORK_DIR/applypatch $WORK_DIR/old.file $NEW_SHA1 $NEW_SIZE $BAD1_SHA1:$WORK_DIR/foo $OLD_SHA1:$WORK_DIR/patch.xdelta3 || fail
|
||||
testname "apply bsdiff patch from cache (corrupted source) with low space"
|
||||
run_command $WORK_DIR/applypatch $WORK_DIR/old.file $NEW_SHA1 $NEW_SIZE $BAD1_SHA1:$WORK_DIR/foo $OLD_SHA1:$WORK_DIR/patch.bsdiff || fail
|
||||
$ADB pull $WORK_DIR/old.file $tmpdir/patched
|
||||
diff -q $DATA_DIR/new.file $tmpdir/patched || fail
|
||||
|
||||
|
|
|
@ -1,20 +1,17 @@
|
|||
/*
|
||||
* Copyright (C) 2008 The Android Open Source Project
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
* 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
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301, USA.
|
||||
* 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.
|
||||
*/
|
||||
|
||||
// This file is a nearly line-for-line copy of bspatch.c from the
|
||||
|
|
Binary file not shown.
|
@ -1,121 +0,0 @@
|
|||
/*
|
||||
* Copyright (C) 2008 The Android Open Source Project
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <errno.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "xdelta3.h"
|
||||
#include "mincrypt/sha.h"
|
||||
|
||||
int ApplyXDelta3Patch(const unsigned char* old_data, ssize_t old_size,
|
||||
const char* patch_filename,
|
||||
FILE* output, SHA_CTX* ctx) {
|
||||
#define WINDOW_SIZE 32768
|
||||
|
||||
int ret;
|
||||
xd3_stream stream;
|
||||
xd3_config config;
|
||||
|
||||
xd3_init_config(&config, 0);
|
||||
config.winsize = WINDOW_SIZE;
|
||||
ret = xd3_config_stream(&stream, &config);
|
||||
if (ret != 0) {
|
||||
fprintf(stderr, "xd3_config_stream error: %s\n", xd3_strerror(ret));
|
||||
return 1;
|
||||
}
|
||||
|
||||
// In xdelta3 terms, the "input" is the patch file: it contains a
|
||||
// sequence of instruction codes and data that will be executed to
|
||||
// produce the output file. The "source" is the original data file;
|
||||
// it is a blob of data to which instructions in the input may refer
|
||||
// (eg, an instruction may say "copy such-and-such range of bytes
|
||||
// from the source to the output").
|
||||
|
||||
// For simplicity, we provide the entire source to xdelta as a
|
||||
// single block. This means it should never have to ask us to load
|
||||
// blocks of the source file.
|
||||
xd3_source source;
|
||||
source.name = "old name";
|
||||
source.size = old_size;
|
||||
source.ioh = NULL;
|
||||
source.blksize = old_size;
|
||||
source.curblkno = 0;
|
||||
source.curblk = old_data;
|
||||
source.onblk = old_size;
|
||||
|
||||
ret = xd3_set_source(&stream, &source);
|
||||
if (ret != 0) {
|
||||
fprintf(stderr, "xd3_set_source error: %s\n", xd3_strerror(ret));
|
||||
return 1;
|
||||
}
|
||||
|
||||
unsigned char buffer[WINDOW_SIZE];
|
||||
FILE* input = fopen(patch_filename, "rb");
|
||||
if (input == NULL) {
|
||||
fprintf(stderr, "failed to open patch file %s: %d (%s)\n",
|
||||
patch_filename, errno, strerror(errno));
|
||||
return 1;
|
||||
}
|
||||
|
||||
size_t bytes_read;
|
||||
|
||||
do {
|
||||
bytes_read = fread(buffer, 1, WINDOW_SIZE, input);
|
||||
if (feof(input)) {
|
||||
xd3_set_flags(&stream, XD3_FLUSH);
|
||||
}
|
||||
xd3_avail_input(&stream, buffer, bytes_read);
|
||||
process:
|
||||
ret = xd3_decode_input(&stream);
|
||||
switch (ret) {
|
||||
case XD3_INPUT:
|
||||
continue;
|
||||
case XD3_OUTPUT:
|
||||
SHA_update(ctx, stream.next_out, stream.avail_out);
|
||||
if (fwrite(stream.next_out, 1, stream.avail_out, output) !=
|
||||
stream.avail_out) {
|
||||
fprintf(stderr, "short write of output file: %d (%s)\n",
|
||||
errno, strerror(errno));
|
||||
return 1;
|
||||
}
|
||||
xd3_consume_output(&stream);
|
||||
goto process;
|
||||
case XD3_GETSRCBLK:
|
||||
// We provided the entire source file already; it should never
|
||||
// have to ask us for a block.
|
||||
fprintf(stderr, "xd3_decode_input: unexpected GETSRCBLK\n");
|
||||
return 1;
|
||||
case XD3_GOTHEADER:
|
||||
case XD3_WINSTART:
|
||||
case XD3_WINFINISH:
|
||||
// These are informational events we don't care about.
|
||||
goto process;
|
||||
default:
|
||||
fprintf(stderr, "xd3_decode_input: unknown error %s (%s)\n",
|
||||
xd3_strerror(ret), stream.msg);
|
||||
return 1;
|
||||
}
|
||||
} while (!feof(input));
|
||||
|
||||
fclose(input);
|
||||
return 0;
|
||||
|
||||
#undef WINDOW_SIZE
|
||||
}
|
|
@ -207,7 +207,7 @@
|
|||
}
|
||||
|
||||
#jd-header {
|
||||
background-color: #E9E9E9;
|
||||
background-color: #E2E2E2;
|
||||
padding: 7px 20px;
|
||||
}
|
||||
|
||||
|
@ -253,6 +253,86 @@
|
|||
position:relative;
|
||||
}
|
||||
|
||||
/* summary tables for reference pages */
|
||||
.jd-sumtable {
|
||||
margin: .5em 1em 1em 1em;
|
||||
width:99%;
|
||||
font-size:.9em;
|
||||
}
|
||||
|
||||
.jd-sumtable a {
|
||||
text-decoration:none;
|
||||
}
|
||||
|
||||
.jd-sumtable a:hover {
|
||||
text-decoration:underline;
|
||||
}
|
||||
|
||||
/* a div inside a sumtable th holding "Expand All" */
|
||||
.expandall {
|
||||
float:right;
|
||||
font-weight:normal;
|
||||
}
|
||||
|
||||
/* adjustments for in/direct subclasses tables */
|
||||
.jd-sumtable-subclasses {
|
||||
margin: 1em 0 0 0;
|
||||
max-width:968px;
|
||||
}
|
||||
|
||||
/* extra space between end of method name and open-paren */
|
||||
.sympad {
|
||||
margin-right: 2px;
|
||||
}
|
||||
|
||||
/* right alignment for the return type in sumtable */
|
||||
.jd-sumtable .jd-typecol {
|
||||
text-align:right;
|
||||
}
|
||||
|
||||
/* adjustments for the expando table-in-table */
|
||||
.jd-sumtable-expando {
|
||||
margin:.5em 0;
|
||||
padding:0;
|
||||
}
|
||||
|
||||
/* a div that holds a short description */
|
||||
.jd-descrdiv {
|
||||
width:100%;
|
||||
padding:3px 1em 0 1em;
|
||||
margin:0;
|
||||
border:0;
|
||||
}
|
||||
|
||||
/* page-top-right container for reference pages (holds
|
||||
links to summary tables) */
|
||||
#api-info-block {
|
||||
font-size:.8em;
|
||||
margin:0;
|
||||
padding:6px;
|
||||
font-weight:normal;
|
||||
float:right;
|
||||
text-align:right;
|
||||
color:#999;
|
||||
max-width:70%;
|
||||
}
|
||||
|
||||
/* applies to a div containing links to summary tables */
|
||||
.sum-details-links {
|
||||
margin:0 .5em;
|
||||
padding:0;
|
||||
font-weight:normal;
|
||||
}
|
||||
|
||||
.sum-details-links a {
|
||||
text-decoration:none;
|
||||
}
|
||||
|
||||
.sum-details-links a:hover {
|
||||
text-decoration:underline;
|
||||
}
|
||||
|
||||
|
||||
/* inheritance table */
|
||||
.jd-inheritance-table {
|
||||
border-spacing:0;
|
||||
|
@ -295,7 +375,7 @@ hr {
|
|||
color:#111;
|
||||
border-top:2px solid #ccc;
|
||||
padding: .5em 0 0;
|
||||
margin: 1.75em 0 1em 0;
|
||||
margin: 1.5em 0 1em 0;
|
||||
max-width:968px;
|
||||
}
|
||||
|
||||
|
@ -334,7 +414,12 @@ hr {
|
|||
.nolist {
|
||||
list-style:none;
|
||||
padding:0;
|
||||
margin:0 0 1em 1em;
|
||||
margin:0 0 0 1em;
|
||||
}
|
||||
|
||||
.nolist li {
|
||||
padding:0;
|
||||
margin:0;
|
||||
}
|
||||
|
||||
h4 .normal {
|
||||
|
@ -348,18 +433,57 @@ h4 .normal {
|
|||
margin:0 0 1em;
|
||||
}
|
||||
|
||||
.jd-tagdata {
|
||||
margin:.6em 0;
|
||||
/* API reference: a container for the
|
||||
.tagdata blocks that make up the detailed
|
||||
description */
|
||||
.jd-details-descr {
|
||||
padding:0;
|
||||
margin:.5em .25em;
|
||||
}
|
||||
|
||||
.jd-tagdata ul {
|
||||
/* API reference: a block containing
|
||||
a detailed description, a params table,
|
||||
seealso list, etc */
|
||||
.jd-tagdata {
|
||||
margin:.5em 1em;
|
||||
}
|
||||
|
||||
/* API reference: adjustments to
|
||||
the detailed description block */
|
||||
.jd-tagdescr {
|
||||
margin:.25em 0 .75em 0;
|
||||
line-height:1em;
|
||||
}
|
||||
|
||||
.jd-tagdescr p {
|
||||
margin:.5em 0;
|
||||
padding:0;
|
||||
|
||||
}
|
||||
|
||||
.jd-tagdescr ol,
|
||||
.jd-tagdescr ul {
|
||||
margin:0 2.5em;
|
||||
padding:0;
|
||||
}
|
||||
|
||||
.jd-tagdescr table,
|
||||
.jd-tagdescr img {
|
||||
margin:.25em 1em;
|
||||
}
|
||||
|
||||
.jd-tagdescr li {
|
||||
margin:0 0 .25em 0;
|
||||
padding:0;
|
||||
}
|
||||
|
||||
/* API reference: heading marking
|
||||
the details section for constants,
|
||||
attrs, methods, etc. */
|
||||
h4.jd-details-title {
|
||||
font-size:1.15em;
|
||||
background-color: #d6d6d6;
|
||||
margin:0 0 .6em;
|
||||
background-color: #E2E2E2;
|
||||
margin:1.5em 0 .6em;
|
||||
padding:3px;
|
||||
}
|
||||
|
||||
|
@ -367,8 +491,11 @@ h4.jd-tagtitle {
|
|||
margin:0;
|
||||
}
|
||||
|
||||
.jd-details-descr {
|
||||
padding:3px;
|
||||
/* API reference: heading for "Parameters", "See Also", etc.,
|
||||
in details sections */
|
||||
h5.jd-tagtitle {
|
||||
margin:0 0 .25em 0;
|
||||
font-size:1em;
|
||||
}
|
||||
|
||||
.jd-tagtable {
|
||||
|
@ -398,13 +525,13 @@ h4.jd-tagtitle {
|
|||
}
|
||||
|
||||
div.special {
|
||||
padding: 15px 20px 3px;
|
||||
padding: .5em 1em 1em 1em;
|
||||
margin: 0 0 1em;
|
||||
background-color: #ddf0f2;
|
||||
}
|
||||
|
||||
div.special p {
|
||||
margin: .25em 0;
|
||||
margin: .5em 0 0 0;
|
||||
}
|
||||
|
||||
div.special ol {
|
||||
|
@ -529,6 +656,7 @@ pre.classic {
|
|||
margin-top:0px;
|
||||
width:295;
|
||||
float:right;
|
||||
font-size:.9em;
|
||||
}
|
||||
|
||||
#qv ol {
|
||||
|
@ -725,7 +853,7 @@ table ol.toc {
|
|||
}
|
||||
|
||||
tr.alt-color {
|
||||
background-color: #e6e6e6;
|
||||
background-color: #f6f6f6;
|
||||
}
|
||||
|
||||
/* expando trigger */
|
||||
|
|
|
@ -23,6 +23,84 @@ function toggle_inherited(base) {
|
|||
|
||||
<div class="g-unit" id="doc-content">
|
||||
|
||||
<div id="api-info-block">
|
||||
|
||||
<?cs # are there inherited members ?>
|
||||
<?cs each:cl=class.inherited ?>
|
||||
<?cs if:subcount(cl.methods) ?>
|
||||
<?cs set:inhmethods = #1 ?>
|
||||
<?cs /if ?>
|
||||
<?cs if:subcount(cl.constants) ?>
|
||||
<?cs set:inhconstants = #1 ?>
|
||||
<?cs /if ?>
|
||||
<?cs if:subcount(cl.fields) ?>
|
||||
<?cs set:inhfields = #1 ?>
|
||||
<?cs /if ?>
|
||||
<?cs if:subcount(cl.attrs) ?>
|
||||
<?cs set:inhattrs = #1 ?>
|
||||
<?cs /if ?>
|
||||
<?cs /each ?>
|
||||
|
||||
<div class="sum-details-links">
|
||||
Summary:
|
||||
<?cs if:subcount(class.inners) ?>
|
||||
<a href="#nestedclasses">Nested Classes</a>
|
||||
<?cs set:linkcount = #1 ?>
|
||||
<?cs /if ?>
|
||||
<?cs if:subcount(class.attrs) ?>
|
||||
<?cs if:linkcount ?>| <?cs /if ?><a href="#lattrs">XML Attrs</a>
|
||||
<?cs set:linkcount = #1 ?>
|
||||
<?cs /if ?>
|
||||
<?cs if:inhattrs ?>
|
||||
<?cs if:linkcount ?>| <?cs /if ?><a href="#inhattrs">Inherited XML Attrs</a>
|
||||
<?cs set:linkcount = #1 ?>
|
||||
<?cs /if ?>
|
||||
<?cs if:subcount(class.enumConstants) ?>
|
||||
<?cs if:linkcount ?>| <?cs /if ?><a href="#enumconstants">Enums</a>
|
||||
<?cs set:linkcount = #1 ?>
|
||||
<?cs /if ?>
|
||||
<?cs if:subcount(class.constants) ?>
|
||||
<?cs if:linkcount ?>| <?cs /if ?><a href="#constants">Constants</a>
|
||||
<?cs set:linkcount = #1 ?>
|
||||
<?cs /if ?>
|
||||
<?cs if:inhconstants ?>
|
||||
<?cs if:linkcount ?>| <?cs /if ?><a href="#inhconstants">Inherited Constants</a>
|
||||
<?cs set:linkcount = #1 ?>
|
||||
<?cs /if ?>
|
||||
<?cs if:subcount(class.fields) ?>
|
||||
<?cs if:linkcount ?>| <?cs /if ?><a href="#lfields">Fields</a>
|
||||
<?cs set:linkcount = #1 ?>
|
||||
<?cs /if ?>
|
||||
<?cs if:inhfields ?>
|
||||
<?cs if:linkcount ?>| <?cs /if ?><a href="#inhfields">Inherited Fields</a>
|
||||
<?cs set:linkcount = #1 ?>
|
||||
<?cs /if ?>
|
||||
<?cs if:subcount(class.ctors.public) ?>
|
||||
<?cs if:linkcount ?>| <?cs /if ?><a href="#pubctors">Ctors</a>
|
||||
<?cs set:linkcount = #1 ?>
|
||||
<?cs /if ?>
|
||||
<?cs if:subcount(class.ctors.protected) ?>
|
||||
<?cs if:linkcount ?>| <?cs /if ?><a href="#proctors">Protected Ctors</a>
|
||||
<?cs set:linkcount = #1 ?>
|
||||
<?cs /if ?>
|
||||
<?cs if:subcount(class.methods.public) ?>
|
||||
<?cs if:linkcount ?>| <?cs /if ?><a href="#pubmethods">Methods</a>
|
||||
<?cs set:linkcount = #1 ?>
|
||||
<?cs /if ?>
|
||||
<?cs if:subcount(class.methods.protected) ?>
|
||||
<?cs if:linkcount ?>| <?cs /if ?><a href="#promethods">Protected Methods</a>
|
||||
<?cs set:linkcount = #1 ?>
|
||||
<?cs /if ?>
|
||||
<?cs if:inhmethods ?>
|
||||
<?cs if:linkcount ?>| <?cs /if ?><a href="#inhmethods">Inherited Methods</a>
|
||||
<?cs /if ?>
|
||||
</nobr>
|
||||
<?cs if:inhattrs || inhconstants || inhfields || inhmethods || subcount(class.subclasses.direct) || subcount(class.subclasses.indirect) ?>
|
||||
| [<a href="">Expand All</a>]
|
||||
<?cs /if ?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?cs # this next line must be exactly like this to be parsed by eclipse ?>
|
||||
<!-- ======== START OF CLASS DATA ======== -->
|
||||
|
||||
|
@ -58,7 +136,7 @@ function toggle_inherited(base) {
|
|||
<tr>
|
||||
<?cs loop:i = 1, (subcount(class.inheritance)-colspan), 1 ?>
|
||||
<td class="jd-inheritance-space"> <?cs if:(subcount(class.inheritance)-colspan) == i ?> ↳<?cs /if ?></td>
|
||||
<?cs /loop ?>
|
||||
<?cs /loop ?>
|
||||
<td colspan="<?cs var:colspan ?>" class="jd-inheritance-class-cell"><?cs
|
||||
if:colspan == 1
|
||||
?><?cs call:class_name(class.qualifiedType) ?><?cs
|
||||
|
@ -70,6 +148,21 @@ function toggle_inherited(base) {
|
|||
<?cs /each ?>
|
||||
</table>
|
||||
|
||||
<?cs # this next line must be exactly like this to be parsed by eclipse ?>
|
||||
<!-- ======== NESTED CLASS SUMMARY ======== -->
|
||||
<?cs if:subcount(class.subclasses.direct) ?>
|
||||
<table class="jd-sumtable jd-sumtable-subclasses"><tr><td colspan="12" style="border:none;margin:0;padding:0;">
|
||||
<?cs call:expando_trigger("subclasses-direct", "closed") ?>Known Direct Subclasses
|
||||
<?cs call:expandable_class_list("subclasses-direct", class.subclasses.direct, "list") ?>
|
||||
</td></tr></table>
|
||||
<?cs /if ?>
|
||||
|
||||
<?cs if:subcount(class.subclasses.indirect) ?>
|
||||
<table class="jd-sumtable jd-sumtable-subclasses"><tr><td colspan="12" style="border:none;margin:0;padding:0;">
|
||||
<?cs call:expando_trigger("subclasses-indirect", "closed") ?>Known Indirect Subclasses
|
||||
<?cs call:expandable_class_list("subclasses-indirect", class.subclasses.indirect, "list") ?>
|
||||
</td></tr></table>
|
||||
<?cs /if ?>
|
||||
|
||||
<div class="jd-descr">
|
||||
<?cs call:deprecated_warning(class) ?>
|
||||
|
@ -78,33 +171,15 @@ function toggle_inherited(base) {
|
|||
<p><?cs call:tag_list(class.descr) ?></p>
|
||||
<?cs /if ?>
|
||||
|
||||
<?cs # this next line must be exactly like this to be parsed by eclipse ?>
|
||||
<!-- ======== NESTED CLASS SUMMARY ======== -->
|
||||
<?cs if:subcount(class.inners) ?>
|
||||
<h4><?cs call:expando_trigger("nested-classes", "opened") ?>Nested Classes</h4>
|
||||
<?cs call:expandable_class_list("nested-classes", class.inners, "summary") ?>
|
||||
<?cs /if ?>
|
||||
|
||||
<?cs if:subcount(class.subclasses.direct) ?>
|
||||
<h4><?cs call:expando_trigger("subclasses-direct", "closed") ?>Known Direct Subclasses</h4>
|
||||
<?cs call:expandable_class_list("subclasses-direct", class.subclasses.direct, "list") ?>
|
||||
<?cs /if ?>
|
||||
|
||||
<?cs if:subcount(class.subclasses.indirect) ?>
|
||||
<h4><?cs call:expando_trigger("subclasses-indirect", "closed") ?>Known Indirect Subclasses</h4>
|
||||
<?cs call:expandable_class_list("subclasses-indirect", class.subclasses.indirect, "list") ?>
|
||||
<?cs /if ?>
|
||||
|
||||
<?cs call:see_also_tags(class.seeAlso) ?>
|
||||
|
||||
</div><!-- jd-descr -->
|
||||
|
||||
|
||||
<?cs # summar macros ?>
|
||||
<?cs # summary macros ?>
|
||||
|
||||
<?cs def:write_method_summary(methods) ?>
|
||||
<?cs set:count = #1 ?>
|
||||
<table class="jd-linktable">
|
||||
<?cs each:method = methods ?>
|
||||
<tr <?cs if:count % #2 ?>class="alt-color"<?cs /if ?> >
|
||||
<td class="jd-typecol"><nobr>
|
||||
|
@ -115,71 +190,80 @@ function toggle_inherited(base) {
|
|||
<?cs call:type_link(method.generic) ?>
|
||||
<?cs call:type_link(method.returnType) ?></nobr>
|
||||
</td>
|
||||
<td class="jd-linkcol" width="100%"><a href="<?cs var:toroot ?><?cs var:method.href ?>"><strong><?cs var:method.name ?></strong></a>(<?cs call:parameter_list(method.params) ?>)</td>
|
||||
</tr>
|
||||
<?cs if:subcount(method.shortDescr) || subcount(method.deprecated) ?>
|
||||
<tr <?cs if:count % #2 ?>class="alt-color"<?cs /if ?> >
|
||||
<td class="jd-commentrow"></td>
|
||||
<td class="jd-commentrow"><?cs call:short_descr(method) ?></td>
|
||||
</tr>
|
||||
<td class="jd-linkcol" width="100%"><nobr>
|
||||
<span class="sympad"><a href="<?cs var:toroot ?><?cs var:method.href ?>">
|
||||
<?cs var:method.name ?></a></span>(<?cs call:parameter_list(method.params) ?>)</nobr>
|
||||
<?cs if:subcount(method.shortDescr) || subcount(method.deprecated) ?>
|
||||
<div class="jd-descrdiv"><?cs call:short_descr(method) ?></div>
|
||||
<?cs /if ?>
|
||||
</td></tr>
|
||||
<?cs set:count = count + #1 ?>
|
||||
<?cs /each ?>
|
||||
</table>
|
||||
<?cs /def ?>
|
||||
|
||||
<?cs def:write_field_summary(fields) ?>
|
||||
<?cs set:count = #1 ?>
|
||||
<table class="jd-linktable">
|
||||
<?cs each:field=fields ?>
|
||||
<tr <?cs if:count % #2 ?>class="alt-color"<?cs /if ?> >
|
||||
<td class="jd-descrcol"><?cs var:field.scope ?> </td>
|
||||
<td class="jd-descrcol"><?cs var:field.static ?> </td>
|
||||
<td class="jd-descrcol"><?cs var:field.final ?> </td>
|
||||
<td class="jd-descrcol"><?cs call:type_link(field.type) ?> </td>
|
||||
<td class="jd-linkcol"><a href="<?cs var:toroot ?><?cs var:field.href ?>"><?cs var:field.name ?></a> </td>
|
||||
<td class="jd-descrcol" width="100%"><?cs call:short_descr(field) ?> </td>
|
||||
<td class="jd-typecol"><nobr>
|
||||
<?cs var:field.scope ?>
|
||||
<?cs var:field.static ?>
|
||||
<?cs var:field.final ?>
|
||||
<?cs call:type_link(field.type) ?></nobr></td>
|
||||
<td class="jd-linkcol"><a href="<?cs var:toroot ?><?cs var:field.href ?>"><?cs var:field.name ?></a></td>
|
||||
<td class="jd-descrcol" width="100%"><?cs call:short_descr(field) ?></td>
|
||||
</tr>
|
||||
<?cs set:count = count + #1 ?>
|
||||
<?cs /each ?>
|
||||
</table>
|
||||
<?cs /def ?>
|
||||
|
||||
<?cs def:write_constant_summary(fields) ?>
|
||||
<?cs set:count = #1 ?>
|
||||
<table class="jd-linktable">
|
||||
|
||||
<?cs each:field=fields ?>
|
||||
<tr <?cs if:count % #2 ?>class="alt-color"<?cs /if ?> >
|
||||
<td class="jd-descrcol"><?cs call:type_link(field.type) ?> </td>
|
||||
<td class="jd-linkcol"><a href="<?cs var:toroot ?><?cs var:field.href ?>"><?cs var:field.name ?></a> </td>
|
||||
<td class="jd-descrcol"><?cs call:short_descr(field) ?> </td>
|
||||
<td class="jd-typecol"><?cs call:type_link(field.type) ?></td>
|
||||
<td class="jd-linkcol"><a href="<?cs var:toroot ?><?cs var:field.href ?>"><?cs var:field.name ?></a></td>
|
||||
<td class="jd-descrcol" width="100%"><?cs call:short_descr(field) ?></td>
|
||||
</tr>
|
||||
<?cs set:count = count + #1 ?>
|
||||
<?cs /each ?>
|
||||
</table>
|
||||
<?cs /def ?>
|
||||
|
||||
<?cs def:write_attr_summary(attrs) ?>
|
||||
<?cs set:count = #1 ?>
|
||||
<table class="jd-linktable">
|
||||
<tr>
|
||||
<th>Attribute name</th>
|
||||
<th>Related methods</th>
|
||||
<th> </th>
|
||||
<td><nobr><em>Attribute Name</em></nobr></td>
|
||||
<td><nobr><em>Related Method</em></nobr></td>
|
||||
<td><nobr><em>Description</em></nobr></td>
|
||||
</tr>
|
||||
<?cs each:attr=attrs ?>
|
||||
<tr <?cs if:count % #2 ?>class="alt-color"<?cs /if ?> >
|
||||
<td class="jd-linkcol"><a href="<?cs var:toroot ?><?cs var:attr.href ?>"><?cs var:attr.name ?></a></td>
|
||||
<td class="jd-linkcol"><?cs each:m=attr.methods
|
||||
?><a href="<?cs var:toroot ?><?cs var:m.href ?>"><?cs var:m.name ?></a><br/>
|
||||
<?cs /each ?>
|
||||
<td class="jd-linkcol"><?cs each:m=attr.methods ?>
|
||||
<a href="<?cs var:toroot ?><?cs var:m.href ?>"><?cs var:m.name ?></a>
|
||||
<?cs /each ?>
|
||||
</td>
|
||||
<td class="jd-descrcol" width="100%"><?cs call:short_descr(attr) ?> </td>
|
||||
</tr>
|
||||
<?cs set:count = count + #1 ?>
|
||||
<?cs /each ?>
|
||||
</table>
|
||||
<?cs /def ?>
|
||||
|
||||
<?cs def:write_inners_summary(classes) ?>
|
||||
<?cs set:count = #1 ?>
|
||||
<?cs each:cl=class.inners ?>
|
||||
<tr <?cs if:count % #2 ?>class="alt-color"<?cs /if ?> >
|
||||
<td class="jd-typecol"><nobr>
|
||||
<?cs var:class.scope ?>
|
||||
<?cs var:class.static ?>
|
||||
<?cs var:class.final ?>
|
||||
<?cs var:class.abstract ?>
|
||||
<?cs var:class.kind ?></nobr></td>
|
||||
<td class="jd-linkcol"><?cs call:type_link(cl.type) ?></td>
|
||||
<td class="jd-descrcol" width="100%"><?cs call:short_descr(cl) ?> </td>
|
||||
</tr>
|
||||
<?cs set:count = count + #1 ?>
|
||||
<?cs /each ?>
|
||||
<?cs /def ?>
|
||||
|
||||
<?cs # end macros ?>
|
||||
|
@ -187,39 +271,50 @@ function toggle_inherited(base) {
|
|||
<div class="jd-descr">
|
||||
<h2>Summary</h2>
|
||||
|
||||
<?cs if:subcount(class.inners) ?>
|
||||
<?cs # this next line must be exactly like this to be parsed by eclipse ?>
|
||||
<!-- ======== NESTED CLASS SUMMARY ======== -->
|
||||
<table id="nestedclasses" class="jd-sumtable"><tr><th colspan="12">Nested Classes</th></tr>
|
||||
<?cs call:write_inners_summary(class.inners) ?>
|
||||
<?cs /if ?>
|
||||
|
||||
<?cs # this next line must be exactly like this to be parsed by eclipse ?>
|
||||
<!-- =========== FIELD SUMMARY =========== -->
|
||||
<?cs if:subcount(class.attrs) ?>
|
||||
<h3>XML Attributes</h3>
|
||||
<!-- =========== FIELD SUMMARY =========== -->
|
||||
<table id="lattrs" class="jd-sumtable"><tr><th colspan="12">XML Attributes</th></tr>
|
||||
<?cs call:write_attr_summary(class.attrs) ?>
|
||||
<?cs /if ?>
|
||||
|
||||
<?cs # if there are inherited attrs, write the table ?>
|
||||
<?cs if:inhattrs ?>
|
||||
<table id="inhattrs" class="jd-sumtable"><tr><th>
|
||||
<div class="expandall">[<a href="">Expand All</a>]</div>
|
||||
<div style="clear:left;">Inherited XML Attributes</div></th></tr>
|
||||
<?cs each:cl=class.inherited ?>
|
||||
<?cs if:subcount(cl.attrs) ?>
|
||||
<h4><?cs call:expando_trigger("inherited-attrs-"+cl.qualified, "closed") ?>XML Attributes inherited
|
||||
from <?cs var:cl.kind ?>
|
||||
<a href="<?cs var:toroot ?><?cs var:cl.link ?>"><?cs var:cl.qualified ?></a>
|
||||
</h4>
|
||||
<tr><td colspan="12">
|
||||
<?cs call:expando_trigger("inherited-attrs-"+cl.qualified, "closed") ?>From <?cs var:cl.kind ?>
|
||||
<a href="<?cs var:toroot ?><?cs var:cl.link ?>"><?cs var:cl.qualified ?></a>
|
||||
<div id="inherited-attrs-<?cs var:cl.qualified ?>">
|
||||
<div id="inherited-attrs-<?cs var:cl.qualified ?>-list"
|
||||
class="jd-inheritedlinks">
|
||||
class="jd-inheritedlinks">
|
||||
</div>
|
||||
<div id="inherited-attrs-<?cs var:cl.qualified ?>-summary"
|
||||
style="display: none;">
|
||||
<?cs call:write_attr_summary(cl.attrs) ?>
|
||||
<div id="inherited-attrs-<?cs var:cl.qualified ?>-summary" style="display: none;">
|
||||
<table class="jd-sumtable-expando">
|
||||
<?cs call:write_attr_summary(cl.attrs) ?></table>
|
||||
</div>
|
||||
</div>
|
||||
</td></tr>
|
||||
<?cs /if ?>
|
||||
<?cs /each ?>
|
||||
|
||||
|
||||
</table>
|
||||
<?cs /if ?>
|
||||
|
||||
<?cs if:subcount(class.enumConstants) ?>
|
||||
<?cs # this next line must be exactly like this to be parsed by eclipse ?>
|
||||
<!-- =========== ENUM CONSTANT SUMMARY =========== -->
|
||||
<h3>Enum Values</h3>
|
||||
<table id="enumconstants" class="jd-sumtable"><tr><th colspan="12">Enum Values</th></tr>
|
||||
<?cs set:count = #1 ?>
|
||||
<table class="jd-linktable">
|
||||
<?cs each:field=class.enumConstants ?>
|
||||
<tr <?cs if:count % #2 ?>class="alt-color"<?cs /if ?> >
|
||||
<td class="jd-descrcol"><?cs call:type_link(field.type) ?> </td>
|
||||
|
@ -228,109 +323,129 @@ function toggle_inherited(base) {
|
|||
</tr>
|
||||
<?cs set:count = count + #1 ?>
|
||||
<?cs /each ?>
|
||||
</table>
|
||||
<?cs /if ?>
|
||||
|
||||
<?cs if:subcount(class.constants) ?>
|
||||
<?cs # this next line must be exactly like this to be parsed by eclipse ?>
|
||||
<!-- =========== FIELD SUMMARY =========== -->
|
||||
<h3>Constants</h3>
|
||||
<table id="constants" class="jd-sumtable"><tr><th colspan="12">Constants</th></tr>
|
||||
<?cs call:write_constant_summary(class.constants) ?>
|
||||
</table>
|
||||
<?cs /if ?>
|
||||
|
||||
<?cs # if there are inherited constants, write the table ?>
|
||||
<?cs if:inhconstants ?>
|
||||
<table id="inhconstants" class="jd-sumtable"><tr><th>
|
||||
<div class="expandall">[<a href="">Expand All</a>]</div>
|
||||
<div style="clear:left;">Inherited Constants</div></th></tr>
|
||||
<?cs each:cl=class.inherited ?>
|
||||
<?cs if:subcount(cl.constants) ?>
|
||||
<h4><?cs call:expando_trigger("inherited-constants-"+cl.qualified, "closed") ?>Constants inherited
|
||||
from <?cs var:cl.kind ?>
|
||||
<a href="<?cs var:toroot ?><?cs var:cl.link ?>"><?cs var:cl.qualified ?></a>
|
||||
</h4>
|
||||
<tr><td colspan="12">
|
||||
<?cs call:expando_trigger("inherited-constants-"+cl.qualified, "closed") ?>From <?cs var:cl.kind ?>
|
||||
<a href="<?cs var:toroot ?><?cs var:cl.link ?>"><?cs var:cl.qualified ?></a>
|
||||
<div id="inherited-constants-<?cs var:cl.qualified ?>">
|
||||
<div id="inherited-constants-<?cs var:cl.qualified ?>-list"
|
||||
<div id="inherited-constants-<?cs var:cl.qualified ?>-list"
|
||||
class="jd-inheritedlinks">
|
||||
|
||||
</div>
|
||||
<div id="inherited-constants-<?cs var:cl.qualified ?>-summary"
|
||||
style="display: none;">
|
||||
<?cs call:write_constant_summary(cl.constants) ?>
|
||||
</div>
|
||||
</div>
|
||||
<div id="inherited-constants-<?cs var:cl.qualified ?>-summary" style="display: none;">
|
||||
<table class="jd-sumtable-expando">
|
||||
<?cs call:write_constant_summary(cl.constants) ?></table>
|
||||
</div>
|
||||
</div>
|
||||
</td></tr>
|
||||
<?cs /if ?>
|
||||
<?cs /each ?>
|
||||
|
||||
</table>
|
||||
<?cs /if ?>
|
||||
|
||||
<?cs if:subcount(class.fields) ?>
|
||||
<?cs # this next line must be exactly like this to be parsed by eclipse ?>
|
||||
<!-- =========== FIELD SUMMARY =========== -->
|
||||
<h3>Fields</h3>
|
||||
<table id="lfields" class="jd-sumtable"><tr><th colspan="12">Fields</th></tr>
|
||||
<?cs call:write_field_summary(class.fields) ?>
|
||||
</table>
|
||||
<?cs /if ?>
|
||||
|
||||
<?cs # if there are inherited fields, write the table ?>
|
||||
<?cs if:inhfields ?>
|
||||
<table id="inhfields" class="jd-sumtable"><tr><th>
|
||||
<div class="expandall">[<a href="">Expand All</a>]</div>
|
||||
<div style="clear:left;">Inherited Fields</div></th></tr>
|
||||
<?cs each:cl=class.inherited ?>
|
||||
<?cs if:subcount(cl.fields) ?>
|
||||
<h4><?cs call:expando_trigger("inherited-fields-"+cl.qualified, "closed") ?>Fields inherited
|
||||
from <?cs var:cl.kind ?>
|
||||
<a href="<?cs var:toroot ?><?cs var:cl.link ?>"><?cs var:cl.qualified ?></a>
|
||||
</h4>
|
||||
<tr><td colspan="12">
|
||||
<?cs call:expando_trigger("inherited-fields-"+cl.qualified, "closed") ?>From <?cs var:cl.kind ?>
|
||||
<a href="<?cs var:toroot ?><?cs var:cl.link ?>"><?cs var:cl.qualified ?></a>
|
||||
<div id="inherited-fields-<?cs var:cl.qualified ?>">
|
||||
<div id="inherited-fields-<?cs var:cl.qualified ?>-list"
|
||||
<div id="inherited-fields-<?cs var:cl.qualified ?>-list"
|
||||
class="jd-inheritedlinks">
|
||||
|
||||
</div>
|
||||
<div id="inherited-fields-<?cs var:cl.qualified ?>-summary"
|
||||
style="display: none;">
|
||||
<?cs call:write_field_summary(cl.fields) ?>
|
||||
</div>
|
||||
</div>
|
||||
<div id="inherited-fields-<?cs var:cl.qualified ?>-summary" style="display: none;">
|
||||
<table class="jd-sumtable-expando">
|
||||
<?cs call:write_field_summary(cl.fields) ?></table>
|
||||
</div>
|
||||
</div>
|
||||
</td></tr>
|
||||
<?cs /if ?>
|
||||
<?cs /each ?>
|
||||
|
||||
</table>
|
||||
<?cs /if ?>
|
||||
|
||||
<?cs if:subcount(class.ctors.public) ?>
|
||||
<?cs # this next line must be exactly like this to be parsed by eclipse ?>
|
||||
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
|
||||
<h3>Public Constructors</h3>
|
||||
<table id="pubctors" class="jd-sumtable"><tr><th colspan="12">Public Constructors</th></tr>
|
||||
<?cs call:write_method_summary(class.ctors.public) ?>
|
||||
</table>
|
||||
<?cs /if ?>
|
||||
|
||||
<?cs if:subcount(class.ctors.protected) ?>
|
||||
<?cs # this next line must be exactly like this to be parsed by eclipse ?>
|
||||
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
|
||||
<h3>Protected Constructors</h3>
|
||||
<table id="proctors" class="jd-sumtable"><tr><th colspan="12">Protected Constructors</th></tr>
|
||||
<?cs call:write_method_summary(class.ctors.protected) ?>
|
||||
</table>
|
||||
<?cs /if ?>
|
||||
|
||||
<?cs if:subcount(class.methods.public) ?>
|
||||
<?cs # this next line must be exactly like this to be parsed by eclipse ?>
|
||||
<!-- ========== METHOD SUMMARY =========== -->
|
||||
<h3>Public Methods</h3>
|
||||
<table id="pubmethods" class="jd-sumtable"><tr><th colspan="12">Public Methods</th></tr>
|
||||
<?cs call:write_method_summary(class.methods.public) ?>
|
||||
</table>
|
||||
<?cs /if ?>
|
||||
|
||||
<?cs if:subcount(class.methods.protected) ?>
|
||||
<?cs # this next line must be exactly like this to be parsed by eclipse ?>
|
||||
<!-- ========== METHOD SUMMARY =========== -->
|
||||
<h3>Protected Methods</h3>
|
||||
<table id="promethods" class="jd-sumtable"><tr><th colspan="12">Protected Methods</th></tr>
|
||||
<?cs call:write_method_summary(class.methods.protected) ?>
|
||||
</table>
|
||||
<?cs /if ?>
|
||||
|
||||
<?cs # if there are inherited methods, write the table ?>
|
||||
<?cs if:inhmethods ?>
|
||||
<table id="inhmethods" class="jd-sumtable"><tr><th>
|
||||
<div class="expandall">[<a href="">Expand All</a>]</div>
|
||||
<div style="clear:left;">Inherited Methods</div></th></tr>
|
||||
<?cs each:cl=class.inherited ?>
|
||||
<?cs if:subcount(cl.methods) ?>
|
||||
<h4><?cs call:expando_trigger("inherited-methods-"+cl.qualified, "closed") ?>Methods inherited
|
||||
from <?cs var:cl.kind ?>
|
||||
<a href="<?cs var:toroot ?><?cs var:cl.link ?>"><?cs var:cl.qualified ?></a>
|
||||
</h4>
|
||||
<tr><td colspan="12"><?cs call:expando_trigger("inherited-methods-"+cl.qualified, "closed") ?>
|
||||
From <?cs var:cl.kind ?> <a href="<?cs var:toroot ?><?cs var:cl.link ?>"><?cs var:cl.qualified ?></a>
|
||||
<div id="inherited-methods-<?cs var:cl.qualified ?>">
|
||||
<div id="inherited-methods-<?cs var:cl.qualified ?>-list"
|
||||
<div id="inherited-methods-<?cs var:cl.qualified ?>-list"
|
||||
class="jd-inheritedlinks">
|
||||
|
||||
</div>
|
||||
<div id="inherited-methods-<?cs var:cl.qualified ?>-summary"
|
||||
style="display: none;">
|
||||
<?cs call:write_method_summary(cl.methods) ?>
|
||||
</div>
|
||||
</div>
|
||||
<div id="inherited-methods-<?cs var:cl.qualified ?>-summary" style="display: none;">
|
||||
<table class="jd-sumtable-expando">
|
||||
<?cs call:write_method_summary(cl.methods) ?></table>
|
||||
</div>
|
||||
</div>
|
||||
</td></tr>
|
||||
<?cs /if ?>
|
||||
<?cs /each ?>
|
||||
</table>
|
||||
<?cs /if ?>
|
||||
|
||||
</div><!-- jd-descr (summary) -->
|
||||
|
||||
|
@ -381,7 +496,8 @@ function toggle_inherited(base) {
|
|||
<?cs var:method.synchronized ?>
|
||||
<?cs call:type_link(method.returnType) ?>
|
||||
</span>
|
||||
<?cs var:method.name ?>(<?cs call:parameter_list(method.params) ?>)
|
||||
<span class="sympad"><?cs var:method.name ?></span>
|
||||
<span class="normal">(<?cs call:parameter_list(method.params) ?>)</span>
|
||||
</h4>
|
||||
<div class="jd-details-descr"><?cs call:description(method) ?></div>
|
||||
</div>
|
||||
|
|
|
@ -18,10 +18,10 @@
|
|||
<?cs each:letter=docs.classes ?>
|
||||
<?cs set:count = #1 ?>
|
||||
<h2 id="letter_<?cs name:letter ?>"><?cs name:letter ?></h2>
|
||||
<table class="jd-linktable jd-lettertable">
|
||||
<table class="jd-sumtable">
|
||||
<?cs set:cur_row = #0 ?>
|
||||
<?cs each:cl = letter ?>
|
||||
<tr class="jd-letterentries <?cs if:count % #2 ?>alt-color<?cs /if ?>" >
|
||||
<tr <?cs if:count % #2 ?>class="alt-color"<?cs /if ?> >
|
||||
<td class="jd-linkcol"><?cs call:type_link(cl.type) ?></td>
|
||||
<td class="jd-descrcol" width="100%"><?cs call:short_descr(cl) ?> </td>
|
||||
</tr>
|
||||
|
|
|
@ -103,7 +103,7 @@ This <?cs var:kind ?> is deprecated.
|
|||
<?cs def:see_also_tags(also) ?>
|
||||
<?cs if:subcount(also) ?>
|
||||
<div class="jd-tagdata">
|
||||
<h4 class="jd-tagtitle">See Also</h4>
|
||||
<h5 class="jd-tagtitle">See Also</h5>
|
||||
<ul class="nolist">
|
||||
<?cs each:tag=also
|
||||
?><li><?cs
|
||||
|
@ -114,8 +114,7 @@ This <?cs var:kind ?> is deprecated.
|
|||
else ?>[ERROR: Unknown @see kind]<?cs
|
||||
/if ?></li>
|
||||
<?cs /each ?>
|
||||
</table>
|
||||
<ul>
|
||||
</ul>
|
||||
</div>
|
||||
<?cs /if ?>
|
||||
<?cs /def ?>
|
||||
|
@ -127,11 +126,12 @@ This <?cs var:kind ?> is deprecated.
|
|||
<?cs def:description(obj) ?>
|
||||
|
||||
<?cs call:deprecated_warning(obj) ?>
|
||||
<?cs call:tag_list(obj.descr) ?>
|
||||
<div class="jd-tagdata jd-tagdescr"><p><?cs call:tag_list(obj.descr) ?></p></div>
|
||||
|
||||
|
||||
<?cs if:subcount(obj.attrRefs) ?>
|
||||
<div class="jd-tagdata">
|
||||
<h4 class="jd-tagtitle">Related XML Attributes</h4>
|
||||
<h5 class="jd-tagtitle">Related XML Attributes</h5>
|
||||
<ul class="nolist">
|
||||
<?cs each:attr=obj.attrRefs ?>
|
||||
<li><a href="<?cs var:toroot ?><?cs var:attr.href ?>"><?cs var:attr.name ?></a></li>
|
||||
|
@ -142,7 +142,7 @@ This <?cs var:kind ?> is deprecated.
|
|||
|
||||
<?cs if:subcount(obj.paramTags) ?>
|
||||
<div class="jd-tagdata">
|
||||
<h4 class="jd-tagtitle">Parameters</h4>
|
||||
<h5 class="jd-tagtitle">Parameters</h5>
|
||||
<table class="jd-tagtable">
|
||||
<?cs each:tag=obj.paramTags
|
||||
?><tr>
|
||||
|
@ -158,14 +158,14 @@ This <?cs var:kind ?> is deprecated.
|
|||
|
||||
<?cs if:subcount(obj.returns) ?>
|
||||
<div class="jd-tagdata">
|
||||
<h4 class="jd-tagtitle">Returns</h4>
|
||||
<h5 class="jd-tagtitle">Returns</h5>
|
||||
<ul class="nolist"><li><?cs call:tag_list(obj.returns) ?></li></ul>
|
||||
</div>
|
||||
<?cs /if ?>
|
||||
|
||||
<?cs if:subcount(obj.throws) ?>
|
||||
<div class="jd-tagdata">
|
||||
<h4 class="jd-tagtitle">Throws</h4>
|
||||
<h5 class="jd-tagtitle">Throws</h5>
|
||||
<table class="jd-tagtable">
|
||||
<?cs each:tag=obj.throws
|
||||
?> <tr>
|
||||
|
@ -185,7 +185,7 @@ This <?cs var:kind ?> is deprecated.
|
|||
<?cs # A table of links to classes with descriptions, as in a package file or the nested classes ?>
|
||||
<?cs def:class_link_table(classes) ?>
|
||||
<?cs set:count = #1 ?>
|
||||
<table class="jd-linktable"><?cs
|
||||
<table class="jd-sumtable-expando"><?cs
|
||||
each:cl=classes ?>
|
||||
<tr <?cs if:count % #2 ?>class="alt-color"<?cs /if ?> >
|
||||
<td class="jd-linkcol"><?cs call:type_link(cl.type) ?></td>
|
||||
|
|
|
@ -29,7 +29,9 @@
|
|||
<?cs def:class_table(label, classes) ?>
|
||||
<?cs if:subcount(classes) ?>
|
||||
<h3><?cs var:label ?></h3>
|
||||
<div class="jd-sumtable">
|
||||
<?cs call:class_link_table(classes) ?>
|
||||
</div>
|
||||
<?cs /if ?>
|
||||
<?cs /def ?>
|
||||
|
||||
|
|
|
@ -17,9 +17,9 @@
|
|||
</div>
|
||||
|
||||
<?cs set:count = #1 ?>
|
||||
<table class="jd-linktable">
|
||||
<table class="jd-sumtable">
|
||||
<?cs each:pkg = docs.packages ?>
|
||||
<tr class="jd-letterentries <?cs if:count % #2 ?>alt-color<?cs /if ?>" >
|
||||
<tr <?cs if:count % #2 ?>class="alt-color"<?cs /if ?> >
|
||||
<td class="jd-linkcol"><?cs call:package_link(pkg) ?></td>
|
||||
<td class="jd-descrcol" width="100%"><?cs call:tag_list(pkg.shortDescr) ?> </td>
|
||||
</tr>
|
||||
|
|
Loading…
Reference in New Issue