diff --git a/autorelease.sh b/autorelease.sh
deleted file mode 100644
index 2a917466..00000000
--- a/autorelease.sh
+++ /dev/null
@@ -1,41 +0,0 @@
-#########################################################################
-# File Name: autorelease.sh
-# Author: pxz
-# Created Time: Mon 31 Aug 2020 10:19:47 AM CST
-#########################################################################
-#!/bin/sh
-if [ $# -lt 8 ]; then
-echo "USAGE: ./autorelease.sh [API_V4_URL] [PROJECT_URL]
- [PROJECT_ID] [TOKEN]
- [COMMIT_TAG] [JOB] [PROJECT_NAME] [USER_DEFINE]"
- echo "$1; $2; $3; $4; $5; $6; $7; $8"
-exit 1;
-fi
-
-CI_API_V4_URL=$1
-CI_PROJECT_URL=$2
-CI_PROJECT_ID=$3
-CI_TOKEN=$4
-CI_COMMIT_TAG=$5
-ARTIFACTS_JOB=$6
-CI_PROJECT_NAME=$7
-USER_DEFINE=$8
-
-res=`echo -e "curl --header \"PRIVATE-TOKEN: $CI_TOKEN\" $CI_API_V4_URL/projects/$CI_PROJECT_ID/releases/$CI_COMMIT_TAG -o /dev/null -s -w %{http_code}"| /bin/bash`
-
-if [[ $res == "200" ]]; then
- eval $(echo -e "curl --request POST --header \"PRIVATE-TOKEN: $CI_TOKEN\" \
- --data name=\"$CI_PROJECT_NAME-$USER_DEFINE-$CI_COMMIT_TAG.zip\" \
- --data url=\"$CI_PROJECT_URL/-/jobs/artifacts/$CI_COMMIT_TAG/download?job=$ARTIFACTS_JOB\"\
- $CI_API_V4_URL/projects/$CI_PROJECT_ID/releases/$CI_COMMIT_TAG/assets/links")
-else
- eval $(echo -e "curl --header 'Content-Type: application/json' --header \
- \"PRIVATE-TOKEN: $CI_TOKEN\" --data '{ \"name\": \"$CI_COMMIT_TAG\", \
- \"tag_name\": \"$CI_COMMIT_TAG\", \"description\": \"auto_release\",\
- \"assets\": { \"links\": [{ \"name\": \
- \"$CI_PROJECT_NAME-$USER_DEFINE-$CI_COMMIT_TAG.zip\", \"url\": \
- \"$CI_PROJECT_URL/-/jobs/artifacts/$CI_COMMIT_TAG/download?job=$ARTIFACTS_JOB\"\
- }] } }' --request POST $CI_API_V4_URL/projects/$CI_PROJECT_ID/releases/")
-fi
-h
-
diff --git a/autorevision.sh b/autorevision.sh
deleted file mode 100644
index 8f496ebe..00000000
--- a/autorevision.sh
+++ /dev/null
@@ -1,1273 +0,0 @@
-#########################################################################
-# File Name: autorevision.sh
-# Author: pxz
-# Created Time: Mon 31 Aug 2020 10:17:53 AM CST
-#########################################################################
-#!/bopyright (c) 2012 - 2016 dak180 and contributors. See
-# https://opensource.org/licenses/mit-license.php or the included
-# COPYING.md for licence terms.
-#
-# autorevision - extracts metadata about the head version from your
-# repository.
-
-# Usage message.
-arUsage() {
- cat > "/dev/stderr" << EOF
-usage: autorevision {-t output-type | -s symbol} [-o cache-file [-f] ] [-V]
- Options include:
- -t output-type = specify output type
- -s symbol = specify symbol output
- -o cache-file = specify cache file location
- -f = force the use of cache data
- -U = check for untracked files in svn
- -V = emit version and exit
- -? = help message
-
-The following are valid output types:
- clojure = clojure file
- c = C/C++ file
- h = Header for use with c/c++
- hpp = Alternate C++ header strings with namespace
- ini = INI file
- java = Java file
- javaprop = Java properties file
- js = javascript file
- json = JSON file
- lua = Lua file
- m4 = m4 file
- matlab = matlab file
- octave = octave file
- php = PHP file
- pl = Perl file
- py = Python file
- rpm = rpm file
- scheme = scheme file
- sh = Bash sytax
- swift = Swift file
- tex = (La)TeX file
- xcode = Header useful for populating info.plist files
- cmake = CMake file
-
-
-The following are valid symbols:
- VCS_TYPE
- VCS_BASENAME
- VCS_UUID
- VCS_NUM
- VCS_DATE
- VCS_BRANCH
- VCS_TAG
- VCS_TICK
- VCS_EXTRA
- VCS_FULL_HASH
- VCS_SHORT_HASH
- VCS_WC_MODIFIED
- VCS_ACTION_STAMP
-EOF
- exit 1
-}
-
-# Config
-ARVERSION="&&ARVERSION&&"
-TARGETFILE="/dev/stdout"
-while getopts ":t:o:s:VfU" OPTION; do
- case "${OPTION}" in
- t)
- AFILETYPE="${OPTARG}"
- ;;
- o)
- CACHEFILE="${OPTARG}"
- ;;
- f)
- CACHEFORCE="1"
- ;;
- s)
- VAROUT="${OPTARG}"
- ;;
- U)
- UNTRACKEDFILES="1"
- ;;
- V)
- echo "autorevision ${ARVERSION}"
- exit 0
- ;;
- ?)
- # If an unknown flag is used (or -?):
- arUsage
- ;;
- esac
-done
-
-if [ ! -z "${VAROUT}" ] && [ ! -z "${AFILETYPE}" ]; then
- # If both -s and -t are specified:
- echo "error: Improper argument combination." 1>&2
- exit 1
-elif [ -z "${VAROUT}" ] && [ -z "${AFILETYPE}" ]; then
- # If neither -s or -t are specified:
- arUsage
-elif [ -z "${CACHEFILE}" ] && [ "${CACHEFORCE}" = "1" ]; then
- # If -f is specified without -o:
- arUsage
-elif [ ! -f "${CACHEFILE}" ] && [ "${CACHEFORCE}" = "1" ]; then
- # If we are forced to use the cache but it does not exist.
- echo "error: Cache forced but no cache found." 1>&2
- exit 1
-fi
-
-# Make sure that the path we are given is one we can source
-# (dash, we are looking at you).
-if [ ! -z "${CACHEFILE}" ] && ! echo "${CACHEFILE}" | grep -q '^\.*/'; then
- CACHEFILE="./${CACHEFILE}"
-fi
-
-GENERATED_HEADER="Generated by autorevision - do not hand-hack!"
-
-# Functions to extract data from different repo types.
-# For git repos
-# shellcheck disable=SC2039,SC2164,SC2155
-gitRepo() {
- local oldPath="${PWD}"
-
- cd "$(git rev-parse --show-toplevel)"
-
- VCS_TYPE="git"
-
- VCS_BASENAME="$(basename "${PWD}")"
-
- VCS_UUID="$(git rev-list --max-parents=0 --date-order --reverse HEAD 2>/dev/null | sed -n 1p)"
- if [ -z "${VCS_UUID}" ]; then
- VCS_UUID="$(git rev-list --topo-order HEAD | tail -n 1)"
- fi
-
- # Is the working copy clean?
- test -z "$(git status --untracked-files=normal --porcelain)"
- VCS_WC_MODIFIED="${?}"
-
- # Enumeration of changesets
- VCS_NUM="$(git rev-list --count HEAD 2>/dev/null)"
- if [ -z "${VCS_NUM}" ]; then
- echo "warning: Counting the number of revisions may be slower due to an outdated git version less than 1.7.2.3. If something breaks, please update it." 1>&2
- VCS_NUM="$(git rev-list HEAD | wc -l)"
- fi
-
- # This may be a git-svn remote. If so, report the Subversion revision.
- if [ -z "$(git config svn-remote.svn.url 2>/dev/null)" ]; then
- # The full revision hash
- VCS_FULL_HASH="$(git rev-parse HEAD)"
-
- # The short hash
- VCS_SHORT_HASH="$(echo "${VCS_FULL_HASH}" | cut -b 1-7)"
- else
- # The git-svn revision number
- VCS_FULL_HASH="$(git svn find-rev HEAD)"
- VCS_SHORT_HASH="${VCS_FULL_HASH}"
- fi
-
- # Current branch
- VCS_BRANCH="$(git rev-parse --symbolic-full-name --verify "$(git name-rev --name-only --no-undefined HEAD 2>/dev/null)" 2>/dev/null | sed -e 's:refs/heads/::' | sed -e 's:refs/::')"
-
- # Cache the description
- local DESCRIPTION="$(git describe --long --tags 2>/dev/null)"
-
- # Current or last tag ancestor (empty if no tags)
- VCS_TAG="$(echo "${DESCRIPTION}" | sed -e "s:-g${VCS_SHORT_HASH}\$::" -e 's:-[0-9]*$::')"
-
- # Distance to last tag or an alias of VCS_NUM if there is no tag
- if [ ! -z "${DESCRIPTION}" ]; then
- VCS_TICK="$(echo "${DESCRIPTION}" | sed -e "s:${VCS_TAG}-::" -e "s:-g${VCS_SHORT_HASH}::")"
- else
- VCS_TICK="${VCS_NUM}"
- fi
-
- # Date of the current commit
- VCS_DATE="$(TZ=UTC git show -s --date=iso-strict-local --pretty=format:%ad | sed -e 's|+00:00|Z|')"
- if [ -z "${VCS_DATE}" ]; then
- echo "warning: Action stamps require git version 2.7+." 1>&2
- VCS_DATE="$(git log -1 --pretty=format:%ci | sed -e 's: :T:' -e 's: ::' -e 's|+00:00|Z|')"
- local ASdis="1"
- fi
-
- # Action Stamp
- if [ -z "${ASdis}" ]; then
- VCS_ACTION_STAMP="${VCS_DATE}!$(git show -s --pretty=format:%cE)"
- else
- VCS_ACTION_STAMP=""
- fi
-
- cd "${oldPath}"
-}
-
-# For hg repos
-# shellcheck disable=SC2039,SC2164
-hgRepo() {
- local oldPath="${PWD}"
-
- cd "$(hg root)"
-
- VCS_TYPE="hg"
-
- VCS_BASENAME="$(basename "${PWD}")"
-
- VCS_UUID="$(hg log -r "0" -l 1 --template '{node}\n')"
-
- # Is the working copy clean?
- test -z "$(hg status -duram)"
- VCS_WC_MODIFIED="${?}"
-
- # Enumeration of changesets
- VCS_NUM="$(hg id -n | tr -d '+')"
-
- # The full revision hash
- VCS_FULL_HASH="$(hg log -r "${VCS_NUM}" -l 1 --template '{node}\n')"
-
- # The short hash
- VCS_SHORT_HASH="$(hg id -i | tr -d '+')"
-
- # Current bookmark (bookmarks are roughly equivalent to git's branches)
- # or branch if no bookmark
- VCS_BRANCH="$(hg id -B | cut -d ' ' -f 1)"
- # Fall back to the branch if there are no bookmarks
- if [ -z "${VCS_BRANCH}" ]; then
- VCS_BRANCH="$(hg id -b)"
- fi
-
- # Current or last tag ancestor (excluding auto tags, empty if no tags)
- VCS_TAG="$(hg log -r "${VCS_NUM}" -l 1 --template '{latesttag}\n' 2>/dev/null | sed -e 's:qtip::' -e 's:tip::' -e 's:qbase::' -e 's:qparent::' -e "s:$(hg --config 'extensions.color=' --config 'extensions.mq=' --color never qtop 2>/dev/null)::" | cut -d ' ' -f 1)"
-
- # Distance to last tag or an alias of VCS_NUM if there is no tag
- if [ ! -z "${VCS_TAG}" ]; then
- VCS_TICK="$(hg log -r "${VCS_NUM}" -l 1 --template '{latesttagdistance}\n' 2>/dev/null)"
- else
- VCS_TICK="${VCS_NUM}"
- fi
-
- # Date of the current commit
- VCS_DATE="$(hg log -r "${VCS_NUM}" -l 1 --template '{date|isodatesec}\n' 2>/dev/null | sed -e 's: :T:' -e 's: ::' -e 's|+00:00|Z|')"
-
- # Action Stamp
- VCS_ACTION_STAMP="$(TZ=UTC hg log -r "${VCS_NUM}" -l 1 --template '{date|localdate|rfc3339date}\n' 2>/dev/null | sed -e 's|+00:00|Z|')!$(hg log -r "${VCS_NUM}" -l 1 --template '{author|email}\n' 2>/dev/null)"
-
- cd "${oldPath}"
-}
-
-# For bzr repos
-# shellcheck disable=SC2039,SC2164
-bzrRepo() {
- local oldPath="${PWD}"
-
- cd "$(bzr root)"
-
- VCS_TYPE="bzr"
-
- VCS_BASENAME="$(basename "${PWD}")"
-
- # Currently unimplemented because more investigation is needed.
- VCS_UUID=""
-
- # Is the working copy clean?
- bzr version-info --custom --template='{clean}\n' | grep -q '1'
- VCS_WC_MODIFIED="${?}"
-
- # Enumeration of changesets
- VCS_NUM="$(bzr revno)"
-
- # The full revision hash
- VCS_FULL_HASH="$(bzr version-info --custom --template='{revision_id}\n')"
-
- # The short hash
- VCS_SHORT_HASH="${VCS_NUM}"
-
- # Nick of the current branch
- VCS_BRANCH="$(bzr nick)"
-
- # Current or last tag ancestor (excluding auto tags, empty if no tags)
- VCS_TAG="$(bzr tags --sort=time | sed '/?$/d' | tail -n1 | cut -d ' ' -f1)"
-
- # Distance to last tag or an alias of VCS_NUM if there is no tag
- if [ ! -z "${VCS_TAG}" ]; then
- VCS_TICK="$(bzr log --line -r "tag:${VCS_TAG}.." | tail -n +2 | wc -l | sed -e 's:^ *::')"
- else
- VCS_TICK="${VCS_NUM}"
- fi
-
- # Date of the current commit
- VCS_DATE="$(bzr version-info --custom --template='{date}\n' | sed -e 's: :T:' -e 's: ::')"
-
- # Action Stamp
- # Currently unimplemented because more investigation is needed.
- VCS_ACTION_STAMP=""
-
- cd "${oldPath}"
-}
-
-# For svn repos
-# shellcheck disable=SC2039,SC2164,SC2155
-svnRepo() {
- local oldPath="${PWD}"
-
- VCS_TYPE="svn"
-
- case "${PWD}" in
- /*trunk*|/*branches*|/*tags*)
- local fn="${PWD}"
- while [ "$(basename "${fn}")" != 'trunk' ] && [ "$(basename "${fn}")" != 'branches' ] && [ "$(basename "${fn}")" != 'tags' ] && [ "$(basename "${fn}")" != '/' ]; do
- local fn="$(dirname "${fn}")"
- done
- local fn="$(dirname "${fn}")"
- if [ "${fn}" = '/' ]; then
- VCS_BASENAME="$(basename "${PWD}")"
- else
- VCS_BASENAME="$(basename "${fn}")"
- fi
- ;;
- *) VCS_BASENAME="$(basename "${PWD}")" ;;
- esac
-
- VCS_UUID="$(svn info --xml | sed -n -e 's:::' -e 's:::p')"
-
- # Cache svnversion output
- local SVNVERSION="$(svnversion)"
-
- # Is the working copy clean?
- echo "${SVNVERSION}" | grep -q "M"
- case "${?}" in
- 0)
- VCS_WC_MODIFIED="1"
- ;;
- 1)
- if [ ! -z "${UNTRACKEDFILES}" ]; then
- # `svnversion` does not detect untracked files and `svn status` is really slow, so only run it if we really have to.
- if [ -z "$(svn status)" ]; then
- VCS_WC_MODIFIED="0"
- else
- VCS_WC_MODIFIED="1"
- fi
- else
- VCS_WC_MODIFIED="0"
- fi
- ;;
- esac
-
- # Enumeration of changesets
- VCS_NUM="$(echo "${SVNVERSION}" | cut -d : -f 1 | sed -e 's:M::' -e 's:S::' -e 's:P::')"
-
- # The full revision hash
- VCS_FULL_HASH="${SVNVERSION}"
-
- # The short hash
- VCS_SHORT_HASH="${VCS_NUM}"
-
- # Current branch
- case "${PWD}" in
- /*trunk*|/*branches*|/*tags*)
- local lastbase=""
- local fn="${PWD}"
- while :
- do
- base="$(basename "${fn}")"
- if [ "${base}" = 'trunk' ]; then
- VCS_BRANCH='trunk'
- break
- elif [ "${base}" = 'branches' ] || [ "${base}" = 'tags' ]; then
- VCS_BRANCH="${lastbase}"
- break
- elif [ "${base}" = '/' ]; then
- VCS_BRANCH=""
- break
- fi
- local lastbase="${base}"
- local fn="$(dirname "${fn}")"
- done
- ;;
- *) VCS_BRANCH="" ;;
- esac
-
- # Current or last tag ancestor (empty if no tags). But "current
- # tag" can't be extracted reliably because Subversion doesn't
- # have tags the way other VCSes do.
- VCS_TAG=""
- VCS_TICK=""
-
- # Date of the current commit
- VCS_DATE="$(svn info --xml | sed -n -e 's:::' -e 's:::p')"
-
- # Action Stamp
- VCS_ACTION_STAMP="${VCS_DATE}!$(svn log --xml -l 1 -r "${VCS_SHORT_HASH}" | sed -n -e 's:::' -e 's:::p')"
-
- cd "${oldPath}"
-}
-
-
-# Functions to output data in different formats.
-# For bash output
-shOutput() {
- cat > "${TARGETFILE}" << EOF
-# ${GENERATED_HEADER}
-
-VCS_TYPE="${VCS_TYPE}"
-VCS_BASENAME="${VCS_BASENAME}"
-VCS_UUID="${VCS_UUID}"
-VCS_NUM="${VCS_NUM}"
-VCS_DATE="${VCS_DATE}"
-VCS_BRANCH="${VCS_BRANCH}"
-VCS_TAG="${VCS_TAG}"
-VCS_TICK="${VCS_TICK}"
-VCS_EXTRA="${VCS_EXTRA}"
-
-VCS_ACTION_STAMP="${VCS_ACTION_STAMP}"
-VCS_FULL_HASH="${VCS_FULL_HASH}"
-VCS_SHORT_HASH="${VCS_SHORT_HASH}"
-
-VCS_WC_MODIFIED="${VCS_WC_MODIFIED}"
-
-# end
-EOF
-}
-
-# For source C output
-cOutput() {
- cat > "${TARGETFILE}" << EOF
-/* ${GENERATED_HEADER} */
-
-const char *VCS_TYPE = "${VCS_TYPE}";
-const char *VCS_BASENAME = "${VCS_BASENAME}";
-const char *VCS_UUID = "${VCS_UUID}";
-const int VCS_NUM = ${VCS_NUM};
-const char *VCS_DATE = "${VCS_DATE}";
-const char *VCS_BRANCH = "${VCS_BRANCH}";
-const char *VCS_TAG = "${VCS_TAG}";
-const int VCS_TICK = ${VCS_TICK};
-const char *VCS_EXTRA = "${VCS_EXTRA}";
-
-const char *VCS_ACTION_STAMP = "${VCS_ACTION_STAMP}";
-const char *VCS_FULL_HASH = "${VCS_FULL_HASH}";
-const char *VCS_SHORT_HASH = "${VCS_SHORT_HASH}";
-
-const int VCS_WC_MODIFIED = ${VCS_WC_MODIFIED};
-
-/* end */
-EOF
-}
-
-# For header output
-hOutput() {
- cat > "${TARGETFILE}" << EOF
-/* ${GENERATED_HEADER} */
-#ifndef AUTOREVISION_H
-#define AUTOREVISION_H
-
-#define VCS_TYPE "${VCS_TYPE}"
-#define VCS_BASENAME "${VCS_BASENAME}"
-#define VCS_UUID "${VCS_UUID}"
-#define VCS_NUM ${VCS_NUM}
-#define VCS_DATE "${VCS_DATE}"
-#define VCS_BRANCH "${VCS_BRANCH}"
-#define VCS_TAG "${VCS_TAG}"
-#define VCS_TICK ${VCS_TICK}
-#define VCS_EXTRA "${VCS_EXTRA}"
-
-#define VCS_ACTION_STAMP "${VCS_ACTION_STAMP}"
-#define VCS_FULL_HASH "${VCS_FULL_HASH}"
-#define VCS_SHORT_HASH "${VCS_SHORT_HASH}"
-
-#define VCS_WC_MODIFIED ${VCS_WC_MODIFIED}
-
-#endif
-
-/* end */
-EOF
-}
-
-# A header output for use with xcode to populate info.plist strings
-xcodeOutput() {
- cat > "${TARGETFILE}" << EOF
-/* ${GENERATED_HEADER} */
-#ifndef AUTOREVISION_H
-#define AUTOREVISION_H
-
-#define VCS_TYPE ${VCS_TYPE}
-#define VCS_BASENAME ${VCS_BASENAME}
-#define VCS_UUID ${VCS_UUID}
-#define VCS_NUM ${VCS_NUM}
-#define VCS_DATE ${VCS_DATE}
-#define VCS_BRANCH ${VCS_BRANCH}
-#define VCS_TAG ${VCS_TAG}
-#define VCS_TICK ${VCS_TICK}
-#define VCS_EXTRA ${VCS_EXTRA}
-
-#define VCS_ACTION_STAMP ${VCS_ACTION_STAMP}
-#define VCS_FULL_HASH ${VCS_FULL_HASH}
-#define VCS_SHORT_HASH ${VCS_SHORT_HASH}
-
-#define VCS_WC_MODIFIED ${VCS_WC_MODIFIED}
-
-#endif
-
-/* end */
-EOF
-}
-
-# For Swift output
-swiftOutput() {
- case "${VCS_WC_MODIFIED}" in
- 0) VCS_WC_MODIFIED="false" ;;
- 1) VCS_WC_MODIFIED="true" ;;
- esac
- # For values that may not exist depending on the type of repo we
- # have read from, set them to `nil` when they are empty.
- if [ -z "${VCS_UUID}" ]; then
- VCS_UUID="nil"
- else
- VCS_UUID="\"${VCS_UUID}\""
- fi
- if [ -z "${VCS_TAG}" ]; then
- VCS_TAG="nil"
- else
- VCS_TAG="\"${VCS_TAG}\""
- fi
- : "${VCS_TICK:="nil"}"
- if [ -z "${VCS_EXTRA}" ]; then
- VCS_EXTRA="nil"
- else
- VCS_EXTRA="\"${VCS_EXTRA}\""
- fi
- if [ -z "${VCS_ACTION_STAMP}" ]; then
- VCS_ACTION_STAMP="nil"
- else
- VCS_ACTION_STAMP="\"${VCS_ACTION_STAMP}\""
- fi
- cat > "${TARGETFILE}" << EOF
-/* ${GENERATED_HEADER} */
-
-let VCS_TYPE = "${VCS_TYPE}"
-let VCS_BASENAME = "${VCS_BASENAME}"
-let VCS_UUID: String? = ${VCS_UUID}
-let VCS_NUM: Int = ${VCS_NUM}
-let VCS_DATE = "${VCS_DATE}"
-let VCS_BRANCH: String = "${VCS_BRANCH}"
-let VCS_TAG: String? = ${VCS_TAG}
-let VCS_TICK: Int? = ${VCS_TICK}
-let VCS_EXTRA: String? = ${VCS_EXTRA}
-
-let VCS_ACTION_STAMP: String? = ${VCS_ACTION_STAMP}
-let VCS_FULL_HASH: String = "${VCS_FULL_HASH}"
-let VCS_SHORT_HASH: String = "${VCS_SHORT_HASH}"
-
-let VCS_WC_MODIFIED: Bool = ${VCS_WC_MODIFIED}
-
-/* end */
-EOF
-}
-
-# For Python output
-pyOutput() {
- case "${VCS_WC_MODIFIED}" in
- 0) VCS_WC_MODIFIED="False" ;;
- 1) VCS_WC_MODIFIED="True" ;;
- esac
- cat > "${TARGETFILE}" << EOF
-# ${GENERATED_HEADER}
-
-VCS_TYPE = "${VCS_TYPE}"
-VCS_BASENAME = "${VCS_BASENAME}"
-VCS_UUID = "${VCS_UUID}"
-VCS_NUM = ${VCS_NUM}
-VCS_DATE = "${VCS_DATE}"
-VCS_BRANCH = "${VCS_BRANCH}"
-VCS_TAG = "${VCS_TAG}"
-VCS_TICK = ${VCS_TICK}
-VCS_EXTRA = "${VCS_EXTRA}"
-
-VCS_ACTION_STAMP = "${VCS_ACTION_STAMP}"
-VCS_FULL_HASH = "${VCS_FULL_HASH}"
-VCS_SHORT_HASH = "${VCS_SHORT_HASH}"
-
-VCS_WC_MODIFIED = ${VCS_WC_MODIFIED}
-
-# end
-EOF
-}
-
-# For Perl output
-plOutput() {
- cat << EOF
-# ${GENERATED_HEADER}
-
-\$VCS_TYPE = '${VCS_TYPE}';
-\$VCS_BASENAME = '${VCS_BASENAME}';
-\$VCS_UUID = '${VCS_UUID}';
-\$VCS_NUM = ${VCS_NUM};
-\$VCS_DATE = '${VCS_DATE}';
-\$VCS_BRANCH = '${VCS_BRANCH}';
-\$VCS_TAG = '${VCS_TAG}';
-\$VCS_TICK = ${VCS_TICK};
-\$VCS_EXTRA = '${VCS_EXTRA}';
-
-\$VCS_ACTION_STAMP = '${VCS_ACTION_STAMP}';
-\$VCS_FULL_HASH = '${VCS_FULL_HASH}';
-\$VCS_SHORT_HASH = '${VCS_SHORT_HASH}';
-
-\$VCS_WC_MODIFIED = ${VCS_WC_MODIFIED};
-
-# end
-1;
-EOF
-}
-
-# For lua output
-luaOutput() {
- case "${VCS_WC_MODIFIED}" in
- 0) VCS_WC_MODIFIED="false" ;;
- 1) VCS_WC_MODIFIED="true" ;;
- esac
- cat > "${TARGETFILE}" << EOF
--- ${GENERATED_HEADER}
-
-VCS_TYPE = "${VCS_TYPE}"
-VCS_BASENAME = "${VCS_BASENAME}"
-VCS_UUID = "${VCS_UUID}"
-VCS_NUM = ${VCS_NUM}
-VCS_DATE = "${VCS_DATE}"
-VCS_BRANCH = "${VCS_BRANCH}"
-VCS_TAG = "${VCS_TAG}"
-VCS_TICK = ${VCS_TICK}
-VCS_EXTRA = "${VCS_EXTRA}"
-
-VCS_ACTION_STAMP = "${VCS_ACTION_STAMP}"
-VCS_FULL_HASH = "${VCS_FULL_HASH}"
-VCS_SHORT_HASH = "${VCS_SHORT_HASH}"
-
-VCS_WC_MODIFIED = ${VCS_WC_MODIFIED}
-
--- end
-EOF
-}
-
-# For php output
-phpOutput() {
- case "${VCS_WC_MODIFIED}" in
- 0) VCS_WC_MODIFIED="false" ;;
- 1) VCS_WC_MODIFIED="true" ;;
- esac
- cat > "${TARGETFILE}" << EOF
- "${VCS_TYPE}",
- "VCS_BASENAME" => "${VCS_BASENAME}",
- "VCS_UUID" => "${VCS_UUID}",
- "VCS_NUM" => ${VCS_NUM},
- "VCS_DATE" => "${VCS_DATE}",
- "VCS_BRANCH" => "${VCS_BRANCH}",
- "VCS_TAG" => "${VCS_TAG}",
- "VCS_TICK" => ${VCS_TICK},
- "VCS_EXTRA" => "${VCS_EXTRA}",
- "VCS_ACTION_STAMP" => "${VCS_ACTION_STAMP}",
- "VCS_FULL_HASH" => "${VCS_FULL_HASH}",
- "VCS_SHORT_HASH" => "${VCS_SHORT_HASH}",
- "VCS_WC_MODIFIED" => ${VCS_WC_MODIFIED}
-);
-
-# end
-?>
-EOF
-}
-
-# For ini output
-iniOutput() {
- case "${VCS_WC_MODIFIED}" in
- 0) VCS_WC_MODIFIED="false" ;;
- 1) VCS_WC_MODIFIED="true" ;;
- esac
- cat > "${TARGETFILE}" << EOF
-; ${GENERATED_HEADER}
-[VCS]
-VCS_TYPE = "${VCS_TYPE}"
-VCS_BASENAME = "${VCS_BASENAME}"
-VCS_UUID = "${VCS_UUID}"
-VCS_NUM = ${VCS_NUM}
-VCS_DATE = "${VCS_DATE}"
-VCS_BRANCH = "${VCS_BRANCH}"
-VCS_TAG = "${VCS_TAG}"
-VCS_TICK = ${VCS_TICK}
-VCS_EXTRA = "${VCS_EXTRA}"
-VCS_ACTION_STAMP = "${VCS_ACTION_STAMP}"
-VCS_FULL_HASH = "${VCS_FULL_HASH}"
-VCS_SHORT_HASH = "${VCS_SHORT_HASH}"
-VCS_WC_MODIFIED = ${VCS_WC_MODIFIED}
-; end
-EOF
-}
-
-# For javascript output
-jsOutput() {
- case "${VCS_WC_MODIFIED}" in
- 1) VCS_WC_MODIFIED="true" ;;
- 0) VCS_WC_MODIFIED="false" ;;
- esac
- cat > "${TARGETFILE}" << EOF
-/** ${GENERATED_HEADER} */
-
-var autorevision = {
- VCS_TYPE: "${VCS_TYPE}",
- VCS_BASENAME: "${VCS_BASENAME}",
- VCS_UUID: "${VCS_UUID}",
- VCS_NUM: ${VCS_NUM},
- VCS_DATE: "${VCS_DATE}",
- VCS_BRANCH: "${VCS_BRANCH}",
- VCS_TAG: "${VCS_TAG}",
- VCS_TICK: ${VCS_TICK},
- VCS_EXTRA: "${VCS_EXTRA}",
-
- VCS_ACTION_STAMP: "${VCS_ACTION_STAMP}",
- VCS_FULL_HASH: "${VCS_FULL_HASH}",
- VCS_SHORT_HASH: "${VCS_SHORT_HASH}",
-
- VCS_WC_MODIFIED: ${VCS_WC_MODIFIED}
-};
-
-/** Node.js compatibility */
-if (typeof module !== 'undefined') {
- module.exports = autorevision;
-}
-
-/** end */
-EOF
-}
-
-# For JSON output
-jsonOutput() {
- case "${VCS_WC_MODIFIED}" in
- 1) VCS_WC_MODIFIED="true" ;;
- 0) VCS_WC_MODIFIED="false" ;;
- esac
- cat > "${TARGETFILE}" << EOF
-{
- "_comment": "${GENERATED_HEADER}",
- "VCS_TYPE": "${VCS_TYPE}",
- "VCS_BASENAME": "${VCS_BASENAME}",
- "VCS_UUID": "${VCS_UUID}",
- "VCS_NUM": ${VCS_NUM},
- "VCS_DATE": "${VCS_DATE}",
- "VCS_BRANCH":"${VCS_BRANCH}",
- "VCS_TAG": "${VCS_TAG}",
- "VCS_TICK": ${VCS_TICK},
- "VCS_EXTRA": "${VCS_EXTRA}",
-
- "VCS_ACTION_STAMP": "${VCS_ACTION_STAMP}",
- "VCS_FULL_HASH": "${VCS_FULL_HASH}",
- "VCS_SHORT_HASH": "${VCS_SHORT_HASH}",
-
- "VCS_WC_MODIFIED": ${VCS_WC_MODIFIED}
-}
-EOF
-}
-
-# For Java output
-javaOutput() {
- case "${VCS_WC_MODIFIED}" in
- 1) VCS_WC_MODIFIED="true" ;;
- 0) VCS_WC_MODIFIED="false" ;;
- esac
- cat > "${TARGETFILE}" << EOF
-/* ${GENERATED_HEADER} */
-
-public class autorevision {
- public static final String VCS_TYPE = "${VCS_TYPE}";
- public static final String VCS_BASENAME = "${VCS_BASENAME}";
- public static final String VCS_UUID = "${VCS_UUID}";
- public static final long VCS_NUM = ${VCS_NUM};
- public static final String VCS_DATE = "${VCS_DATE}";
- public static final String VCS_BRANCH = "${VCS_BRANCH}";
- public static final String VCS_TAG = "${VCS_TAG}";
- public static final long VCS_TICK = ${VCS_TICK};
- public static final String VCS_EXTRA = "${VCS_EXTRA}";
-
- public static final String VCS_ACTION_STAMP = "${VCS_ACTION_STAMP}";
- public static final String VCS_FULL_HASH = "${VCS_FULL_HASH}";
- public static final String VCS_SHORT_HASH = "${VCS_SHORT_HASH}";
-
- public static final boolean VCS_WC_MODIFIED = ${VCS_WC_MODIFIED};
-}
-EOF
-}
-
-# For Java properties output
-javapropOutput() {
- case "${VCS_WC_MODIFIED}" in
- 1) VCS_WC_MODIFIED="true" ;;
- 0) VCS_WC_MODIFIED="false" ;;
- esac
- cat > "${TARGETFILE}" << EOF
-# ${GENERATED_HEADER}
-
-VCS_TYPE=${VCS_TYPE}
-VCS_BASENAME=${VCS_BASENAME}
-VCS_UUID=${VCS_UUID}
-VCS_NUM=${VCS_NUM}
-VCS_DATE=${VCS_DATE}
-VCS_BRANCH=${VCS_BRANCH}
-VCS_TAG=${VCS_TAG}
-VCS_TICK=${VCS_TICK}
-VCS_EXTRA=${VCS_EXTRA}
-
-VCS_ACTION_STAMP=${VCS_ACTION_STAMP}
-VCS_FULL_HASH=${VCS_FULL_HASH}
-VCS_SHORT_HASH=${VCS_SHORT_HASH}
-
-VCS_WC_MODIFIED=${VCS_WC_MODIFIED}
-EOF
-}
-
-# For m4 output
-m4Output() {
- cat > "${TARGETFILE}" << EOF
-dnl ${GENERATED_HEADER}
-define(\`VCS_TYPE', \`${VCS_TYPE}')dnl
-define(\`VCS_BASENAME', \`${VCS_BASENAME}')dnl
-define(\`VCS_UUID', \`${VCS_UUID}')dnl
-define(\`VCS_NUM', \`${VCS_NUM}')dnl
-define(\`VCS_DATE', \`${VCS_DATE}')dnl
-define(\`VCS_BRANCH', \`${VCS_BRANCH}')dnl
-define(\`VCS_TAG', \`${VCS_TAG}')dnl
-define(\`VCS_TICK', \`${VCS_TICK}')dnl
-define(\`VCS_EXTRA', \`${VCS_EXTRA}')dnl
-define(\`VCS_ACTIONSTAMP', \`${VCS_ACTION_STAMP}')dnl
-define(\`VCS_FULLHASH', \`${VCS_FULL_HASH}')dnl
-define(\`VCS_SHORTHASH', \`${VCS_SHORT_HASH}')dnl
-define(\`VCS_WC_MODIFIED', \`${VCS_WC_MODIFIED}')dnl
-EOF
-}
-
-# For (La)TeX output
-texOutput() {
- case "${VCS_WC_MODIFIED}" in
- 0) VCS_WC_MODIFIED="false" ;;
- 1) VCS_WC_MODIFIED="true" ;;
- esac
- cat > "${TARGETFILE}" << EOF
-% ${GENERATED_HEADER}
-\def \vcsType {${VCS_TYPE}}
-\def \vcsBasename {${VCS_BASENAME}}
-\def \vcsUUID {${VCS_UUID}}
-\def \vcsNum {${VCS_NUM}}
-\def \vcsDate {${VCS_DATE}}
-\def \vcsBranch {${VCS_BRANCH}}
-\def \vcsTag {${VCS_TAG}}
-\def \vcsTick {${VCS_TICK}}
-\def \vcsExtra {${VCS_EXTRA}}
-\def \vcsACTIONSTAMP {${VCS_ACTION_STAMP}}
-\def \vcsFullHash {${VCS_FULL_HASH}}
-\def \vcsShortHash {${VCS_SHORT_HASH}}
-\def \vcsWCModified {${VCS_WC_MODIFIED}}
-\endinput
-EOF
-}
-
-# For scheme output
-schemeOutput() {
- case "${VCS_WC_MODIFIED}" in
- 0) VCS_WC_MODIFIED="#f" ;;
- 1) VCS_WC_MODIFIED="#t" ;;
- esac
- cat > "${TARGETFILE}" << EOF
-;; ${GENERATED_HEADER}
-(define VCS_TYPE "${VCS_TYPE}")
-(define VCS_BASENAME "${VCS_BASENAME}")
-(define VCS_UUID "${VCS_UUID}")
-(define VCS_NUM ${VCS_NUM})
-(define VCS_DATE "${VCS_DATE}")
-(define VCS_BRANCH "${VCS_BRANCH}")
-(define VCS_TAG "${VCS_TAG}")
-(define VCS_TICK ${VCS_TICK})
-(define VCS_EXTRA "${VCS_EXTRA}")
-
-(define VCS_ACTION_STAMP "${VCS_ACTION_STAMP}")
-(define VCS_FULL_HASH "${VCS_FULL_HASH}")
-(define VCS_SHORT_HASH "${VCS_SHORT_HASH}")
-
-(define VCS_WC_MODIFIED ${VCS_WC_MODIFIED})
-;; end
-EOF
-}
-
-# For clojure output
-clojureOutput() {
- case "${VCS_WC_MODIFIED}" in
- 0) VCS_WC_MODIFIED="false" ;;
- 1) VCS_WC_MODIFIED="true" ;;
- esac
- cat > "${TARGETFILE}" << EOF
-;; ${GENERATED_HEADER}
-(def VCS_TYPE "${VCS_TYPE}")
-(def VCS_BASENAME "${VCS_BASENAME}")
-(def VCS_UUID "${VCS_UUID}")
-(def VCS_NUM ${VCS_NUM})
-(def VCS_DATE "${VCS_DATE}")
-(def VCS_BRANCH "${VCS_BRANCH}")
-(def VCS_TAG "${VCS_TAG}")
-(def VCS_TICK ${VCS_TICK})
-(def VCS_EXTRA "${VCS_EXTRA}")
-
-(def VCS_ACTION_STAMP "${VCS_ACTION_STAMP}")
-(def VCS_FULL_HASH "${VCS_FULL_HASH}")
-(def VCS_SHORT_HASH "${VCS_SHORT_HASH}")
-
-(def VCS_WC_MODIFIED ${VCS_WC_MODIFIED})
-;; end
-EOF
-}
-
-# For rpm spec file output
-rpmOutput() {
- cat > "${TARGETFILE}" << EOF
-# ${GENERATED_HEADER}
-$([ "${VCS_TYPE}" ] && echo "%define vcs_type ${VCS_TYPE}")
-$([ "${VCS_BASENAME}" ] && echo "%define vcs_basename ${VCS_BASENAME}")
-$([ "${VCS_UUID}" ] && echo "%define vcs_uuid ${VCS_UUID}")
-$([ "${VCS_NUM}" ] && echo "%define vcs_num ${VCS_NUM}")
-$([ "${VCS_DATE}" ] && echo "%define vcs_date ${VCS_DATE}")
-$([ "${VCS_BRANCH}" ] && echo "%define vcs_branch ${VCS_BRANCH}")
-$([ "${VCS_TAG}" ] && echo "%define vcs_tag ${VCS_TAG}")
-$([ "${VCS_TICK}" ] && echo "%define vcs_tick ${VCS_TICK}")
-$([ "${VCS_EXTRA}" ] && echo "%define vcs_extra ${VCS_EXTRA}")
-
-$([ "${VCS_ACTION_STAMP}" ] && echo "%define vcs_action_stamp ${VCS_ACTION_STAMP}")
-$([ "${VCS_FULL_HASH}" ] && echo "%define vcs_full_hash ${VCS_FULL_HASH}")
-$([ "${VCS_SHORT_HASH}" ] && echo "%define vcs_short_hash ${VCS_SHORT_HASH}")
-
-$([ "${VCS_WC_MODIFIED}" ] && echo "%define vcs_wc_modified ${VCS_WC_MODIFIED}")
-# end
-EOF
-}
-
-# shellcheck disable=SC2155,SC2039
-hppOutput() {
- local NAMESPACE="$(echo "${VCS_BASENAME}" | sed -e 's:_::g' | tr '[:lower:]' '[:upper:]')"
- cat > "${TARGETFILE}" << EOF
-/* ${GENERATED_HEADER} */
-
-#ifndef ${NAMESPACE}_AUTOREVISION_H
-#define ${NAMESPACE}_AUTOREVISION_H
-
-#include
-
-namespace $(echo "${NAMESPACE}" | tr '[:upper:]' '[:lower:]')
-{
- const std::string VCS_TYPE = "${VCS_TYPE}";
- const std::string VCS_BASENAME = "${VCS_BASENAME}";
- const std::string VCS_UUID = "${VCS_UUID}";
- const int VCS_NUM = ${VCS_NUM};
- const std::string VCS_DATE = "${VCS_DATE}";
- const std::string VCS_BRANCH = "${VCS_BRANCH}";
- const std::string VCS_TAG = "${VCS_TAG}";
- const int VCS_TICK = ${VCS_TICK};
- const std::string VCS_EXTRA = "${VCS_EXTRA}";
-
- const std::string VCS_ACTION_STAMP = "${VCS_ACTION_STAMP}";
- const std::string VCS_FULL_HASH = "${VCS_FULL_HASH}";
- const std::string VCS_SHORT_HASH = "${VCS_SHORT_HASH}";
-
- const int VCS_WC_MODIFIED = ${VCS_WC_MODIFIED};
-}
-
-#endif
-
-/* end */
-EOF
-}
-
-matlabOutput() {
- case "${VCS_WC_MODIFIED}" in
- 0) VCS_WC_MODIFIED="FALSE" ;;
- 1) VCS_WC_MODIFIED="TRUE" ;;
- esac
- cat > "${TARGETFILE}" << EOF
-% ${GENERATED_HEADER}
-
-VCS_TYPE = '${VCS_TYPE}';
-VCS_BASENAME = '${VCS_BASENAME}';
-VCS_UUID = '${VCS_UUID}';
-VCS_NUM = ${VCS_NUM};
-VCS_DATE = '${VCS_DATE}';
-VCS_BRANCH = '${VCS_BRANCH}';
-VCS_TAG = '${VCS_TAG}';
-VCS_TICK = ${VCS_TICK};
-VCS_EXTRA = '${VCS_EXTRA}';
-
-VCS_ACTION_STAMP = '${VCS_ACTION_STAMP}';
-VCS_FULL_HASH = '${VCS_FULL_HASH}';
-VCS_SHORT_HASH = '${VCS_SHORT_HASH}';
-
-VCS_WC_MODIFIED = ${VCS_WC_MODIFIED};
-
-% end
-EOF
-}
-
-octaveOutput() {
- cat > "${TARGETFILE}" << EOF
-% ${GENERATED_HEADER}
-
-VCS_TYPE = '${VCS_TYPE}';
-VCS_BASENAME = '${VCS_BASENAME}';
-VCS_UUID = '${VCS_UUID}';
-VCS_NUM = ${VCS_NUM};
-VCS_DATE = '${VCS_DATE}';
-VCS_BRANCH = '${VCS_BRANCH}';
-VCS_TAG = '${VCS_TAG}';
-VCS_TICK = ${VCS_TICK};
-VCS_EXTRA = '${VCS_EXTRA}';
-
-VCS_ACTION_STAMP = '${VCS_ACTION_STAMP}';
-VCS_FULL_HASH = '${VCS_FULL_HASH}';
-VCS_SHORT_HASH = '${VCS_SHORT_HASH}';
-
-VCS_WC_MODIFIED = ${VCS_WC_MODIFIED};
-
-% end
-EOF
-}
-
-cmakeOutput() {
- cat > "${TARGETFILE}" << EOF
-# ${GENERATED_HEADER}
-
-set(VCS_TYPE ${VCS_TYPE})
-set(VCS_BASENAME ${VCS_BASENAME})
-set(VCS_UUID ${VCS_UUID})
-set(VCS_NUM ${VCS_NUM})
-set(VCS_DATE ${VCS_DATE})
-set(VCS_BRANCH ${VCS_BRANCH})
-set(VCS_TAG ${VCS_TAG})
-set(VCS_TICK ${VCS_TICK})
-set(VCS_EXTRA ${VCS_EXTRA})
-
-set(VCS_ACTION_STAMP ${VCS_ACTION_STAMP})
-set(VCS_FULL_HASH ${VCS_FULL_HASH})
-set(VCS_SHORT_HASH ${VCS_SHORT_HASH})
-
-set(VCS_WC_MODIFIED ${VCS_WC_MODIFIED})
-
-# end
-EOF
-}
-
-
-# Helper functions
-# Count path segments
-# shellcheck disable=SC2039
-pathSegment() {
- local pathz="${1}"
- local depth="0"
-
- if [ ! -z "${pathz}" ]; then
- # Continue until we are at / or there are no path separators left.
- while [ ! "${pathz}" = "/" ] && [ ! "${pathz}" = "$(echo "${pathz}" | sed -e 's:/::')" ]; do
- pathz="$(dirname "${pathz}")"
- depth="$((depth+1))"
- done
- fi
- echo "${depth}"
-}
-
-# Largest of four numbers
-# shellcheck disable=SC2039
-multiCompare() {
- local larger="${1}"
- local numA="${2}"
- local numB="${3}"
- local numC="${4}"
-
- [ "${numA}" -gt "${larger}" ] && larger="${numA}"
- [ "${numB}" -gt "${larger}" ] && larger="${numB}"
- [ "${numC}" -gt "${larger}" ] && larger="${numC}"
- echo "${larger}"
-}
-
-# Test for repositories
-# shellcheck disable=SC2155,SC2039
-repoTest() {
- REPONUM="0"
- if [ ! -z "$(git rev-parse HEAD 2>/dev/null)" ]; then
- local gitPath="$(git rev-parse --show-toplevel)"
- local gitDepth="$(pathSegment "${gitPath}")"
- REPONUM="$((REPONUM+1))"
- else
- local gitDepth="0"
- fi
- if [ ! -z "$(hg root 2>/dev/null)" ]; then
- local hgPath="$(hg root 2>/dev/null)"
- local hgDepth="$(pathSegment "${hgPath}")"
- REPONUM="$((REPONUM+1))"
- else
- local hgDepth="0"
- fi
- if [ ! -z "$(bzr root 2>/dev/null)" ]; then
- local bzrPath="$(bzr root 2>/dev/null)"
- local bzrDepth="$(pathSegment "${bzrPath}")"
- REPONUM="$((REPONUM+1))"
- else
- local bzrDepth="0"
- fi
- if [ ! -z "$(svn info 2>/dev/null)" ]; then
- local stringz=""
- local stringx=""
- local svnPath="$(svn info --xml | sed -n -e "s:${stringz}::" -e "s:${stringx}::p")"
- # An old enough svn will not be able give us a path; default
- # to 1 for that case.
- if [ -z "${svnPath}" ]; then
- local svnDepth="1"
- else
- local svnDepth="$(pathSegment "${svnPath}")"
- fi
- REPONUM="$((REPONUM+1))"
- else
- local svnDepth="0"
- fi
-
- # Do not do more work then we have to.
- if [ "${REPONUM}" = "0" ]; then
- return
- fi
-
- # Figure out which repo is the deepest and use it.
- local wonRepo="$(multiCompare "${gitDepth}" "${hgDepth}" "${bzrDepth}" "${svnDepth}")"
- if [ "${wonRepo}" = "${gitDepth}" ]; then
- gitRepo
- elif [ "${wonRepo}" = "${hgDepth}" ]; then
- hgRepo
- elif [ "${wonRepo}" = "${bzrDepth}" ]; then
- bzrRepo
- elif [ "${wonRepo}" = "${svnDepth}" ]; then
- svnRepo
- fi
-}
-
-
-
-# Detect which repos we are in and gather data.
-# shellcheck source=/dev/null
-if [ -f "${CACHEFILE}" ] && [ "${CACHEFORCE}" = "1" ]; then
- # When requested only read from the cache to populate our symbols.
- . "${CACHEFILE}"
-else
- # If a value is not set through the environment set VCS_EXTRA to nothing.
- : "${VCS_EXTRA:=""}"
- repoTest
-
- if [ -f "${CACHEFILE}" ] && [ "${REPONUM}" = "0" ]; then
- # We are not in a repo; try to use a previously generated cache to populate our symbols.
- . "${CACHEFILE}"
- # Do not overwrite the cache if we know we are not going to write anything new.
- CACHEFORCE="1"
- elif [ "${REPONUM}" = "0" ]; then
- echo "error: No repo or cache detected." 1>&2
- exit 1
- fi
-fi
-
-
-# -s output is handled here.
-if [ ! -z "${VAROUT}" ]; then
- if [ "${VAROUT}" = "VCS_TYPE" ]; then
- echo "${VCS_TYPE}"
- elif [ "${VAROUT}" = "VCS_BASENAME" ]; then
- echo "${VCS_BASENAME}"
- elif [ "${VAROUT}" = "VCS_NUM" ]; then
- echo "${VCS_NUM}"
- elif [ "${VAROUT}" = "VCS_DATE" ]; then
- echo "${VCS_DATE}"
- elif [ "${VAROUT}" = "VCS_BRANCH" ]; then
- echo "${VCS_BRANCH}"
- elif [ "${VAROUT}" = "VCS_TAG" ]; then
- echo "${VCS_TAG}"
- elif [ "${VAROUT}" = "VCS_TICK" ]; then
- echo "${VCS_TICK}"
- elif [ "${VAROUT}" = "VCS_FULL_HASH" ]; then
- echo "${VCS_FULL_HASH}"
- elif [ "${VAROUT}" = "VCS_SHORT_HASH" ]; then
- echo "${VCS_SHORT_HASH}"
- elif [ "${VAROUT}" = "VCS_WC_MODIFIED" ]; then
- echo "${VCS_WC_MODIFIED}"
- elif [ "${VAROUT}" = "VCS_ACTION_STAMP" ]; then
- echo "${VCS_ACTION_STAMP}"
- else
- echo "error: Not a valid output symbol." 1>&2
- exit 1
- fi
-fi
-
-
-# Detect requested output type and use it.
-if [ ! -z "${AFILETYPE}" ]; then
- if [ "${AFILETYPE}" = "c" ]; then
- cOutput
- elif [ "${AFILETYPE}" = "h" ]; then
- hOutput
- elif [ "${AFILETYPE}" = "xcode" ]; then
- xcodeOutput
- elif [ "${AFILETYPE}" = "swift" ]; then
- swiftOutput
- elif [ "${AFILETYPE}" = "sh" ]; then
- shOutput
- elif [ "${AFILETYPE}" = "py" ] || [ "${AFILETYPE}" = "python" ]; then
- pyOutput
- elif [ "${AFILETYPE}" = "pl" ] || [ "${AFILETYPE}" = "perl" ]; then
- plOutput
- elif [ "${AFILETYPE}" = "lua" ]; then
- luaOutput
- elif [ "${AFILETYPE}" = "php" ]; then
- phpOutput
- elif [ "${AFILETYPE}" = "ini" ]; then
- iniOutput
- elif [ "${AFILETYPE}" = "js" ]; then
- jsOutput
- elif [ "${AFILETYPE}" = "json" ]; then
- jsonOutput
- elif [ "${AFILETYPE}" = "java" ]; then
- javaOutput
- elif [ "${AFILETYPE}" = "javaprop" ]; then
- javapropOutput
- elif [ "${AFILETYPE}" = "tex" ]; then
- texOutput
- elif [ "${AFILETYPE}" = "m4" ]; then
- m4Output
- elif [ "${AFILETYPE}" = "scheme" ]; then
- schemeOutput
- elif [ "${AFILETYPE}" = "clojure" ]; then
- clojureOutput
- elif [ "${AFILETYPE}" = "rpm" ]; then
- rpmOutput
- elif [ "${AFILETYPE}" = "hpp" ]; then
- hppOutput
- elif [ "${AFILETYPE}" = "matlab" ]; then
- matlabOutput
- elif [ "${AFILETYPE}" = "octave" ]; then
- octaveOutput
- elif [ "${AFILETYPE}" = "cmake" ]; then
- cmakeOutput
- else
- echo "error: Not a valid output type." 1>&2
- exit 1
- fi
-fi
-
-
-# If requested, make a cache file.
-if [ ! -z "${CACHEFILE}" ] && [ ! "${CACHEFORCE}" = "1" ]; then
- TARGETFILE="${CACHEFILE}.tmp"
- shOutput
-
- # Check to see if there have been any actual changes.
- if [ ! -f "${CACHEFILE}" ]; then
- mv -f "${CACHEFILE}.tmp" "${CACHEFILE}"
- elif cmp -s "${CACHEFILE}.tmp" "${CACHEFILE}"; then
- rm -f "${CACHEFILE}.tmp"
- else
- mv -f "${CACHEFILE}.tmp" "${CACHEFILE}"
- fi
-fi
-
-
diff --git a/ci/get-nprocessors.sh b/ci/get-nprocessors.sh
deleted file mode 100644
index 43635e76..00000000
--- a/ci/get-nprocessors.sh
+++ /dev/null
@@ -1,48 +0,0 @@
-#!/usr/bin/env bash
-# Copyright 2017 Google Inc.
-# 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 Google Inc. 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 BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE 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.
-
-# This file is typically sourced by another script.
-# if possible, ask for the precise number of processors,
-# otherwise take 2 processors as reasonable default; see
-# https://docs.travis-ci.com/user/speeding-up-the-build/#Makefile-optimization
-if [ -x /usr/bin/getconf ]; then
- NPROCESSORS=$(/usr/bin/getconf _NPROCESSORS_ONLN)
-else
- NPROCESSORS=2
-fi
-
-# as of 2017-09-04 Travis CI reports 32 processors, but GCC build
-# crashes if parallelized too much (maybe memory consumption problem),
-# so limit to 4 processors for the time being.
-if [ $NPROCESSORS -gt 4 ] ; then
- echo "$0:Note: Limiting processors to use by make from $NPROCESSORS to 4."
- NPROCESSORS=4
-fi
diff --git a/ci/perpare_pulp3_netrc.sh b/ci/perpare_pulp3_netrc.sh
deleted file mode 100644
index 8414bbba..00000000
--- a/ci/perpare_pulp3_netrc.sh
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/usr/bin/env sh
-set -evx
-echo "machine ${PULP3_SERVER_URL}\nlogin ${PULP3_SERVER_LOGIN}\npassword ${PULP3_SERVER_PASSWORD}\n" > ~/.netrc
diff --git a/ci/travis.sh b/ci/travis.sh
deleted file mode 100644
index 40a2780c..00000000
--- a/ci/travis.sh
+++ /dev/null
@@ -1,64 +0,0 @@
-#!/usr/bin/env sh
-set -evx
-
-chmod +x ci/get-nprocessors.sh
-. ci/get-nprocessors.sh
-
-# if possible, ask for the precise number of processors,
-# otherwise take 2 processors as reasonable default; see
-# https://docs.travis-ci.com/user/speeding-up-the-build/#Makefile-optimization
-if [ -x /usr/bin/getconf ]; then
- NPROCESSORS=$(/usr/bin/getconf _NPROCESSORS_ONLN)
-else
- NPROCESSORS=2
-fi
-
-# as of 2017-09-04 Travis CI reports 32 processors, but GCC build
-# crashes if parallelized too much (maybe memory consumption problem),
-# so limit to 4 processors for the time being.
-if [ $NPROCESSORS -gt 4 ] ; then
- echo "$0:Note: Limiting processors to use by make from $NPROCESSORS to 4."
- NPROCESSORS=4
-fi
-
-# Tell make to use the processors. No preceding '-' required.
-MAKEFLAGS="j${NPROCESSORS}"
-export MAKEFLAGS
-
-env | sort
-
-# Set default values to OFF for these variables if not specified.
-: "${NO_EXCEPTION:=OFF}"
-: "${NO_RTTI:=OFF}"
-: "${COMPILER_IS_GNUCXX:=OFF}"
-
-# Install dependency from YUM
-if [ -n "${INSTALL_DEPENDENCY_LIBRARY}" ]; then
- yum install -y $INSTALL_DEPENDENCY_LIBRARY
- source /etc/profile.d/framework.sh
-fi
-mkdir build || true
-cd build
-
-cmake3 -DCMAKE_CXX_FLAGS=$CXX_FLAGS \
- -DCMAKE_BUILD_TYPE=$BUILD_TYPE \
- -DCMAKE_INSTALL_PREFIX=$INSTALL_PREFIX \
- -DENABLE_DEVEL=$ENABLE_DEVEL_SWITCH \
- ..
-
-make
-
-if [ -n "${PACKAGE}" ]; then
- make package
-fi
-
-if [ -n "${UPLOAD}" ]; then
- cp ~/rpm_upload_tools.py ./
- python3 rpm_upload_tools.py ${PULP3_REPO_NAME} ${PULP3_DIST_NAME} *.rpm
-fi
-
-#if [ -n "${UPLOAD_SYMBOL_FILES}" ]; then
-# rpm -i tfe*debuginfo*.rpm
-# cp /usr/lib/debug/opt/tsg/tfe/bin/tfe.debug /tmp/tfe.debuginfo.${CI_COMMIT_SHORT_SHA}
-# sentry-cli upload-dif -t elf /tmp/tfe.debuginfo.${CI_COMMIT_SHORT_SHA}
-#fi
diff --git a/cmake/Findtcmalloc.cmake b/cmake/Findtcmalloc.cmake
deleted file mode 100644
index 88783db2..00000000
--- a/cmake/Findtcmalloc.cmake
+++ /dev/null
@@ -1,6 +0,0 @@
-find_path(TCMALLOC_INCLUDE_DIR tcmalloc.h ${PROJECT_SOURCE_DIR}/3rd/tcmalloc /usr/include /usr/include/gperftools /usr/local/include /usr/local/include/gperftools )
-find_library(TCMALLOC_LIBRARY NAMES tcmalloc PATHS ${PROJECT_SOURCE_DIR}/3rd/tcmalloc /usr/lib /usr/lib/gperftools /usr/local/lib /usr/local/lib/gperftools)
-
-if (TCMALLOC_INCLUDE_DIR AND TCMALLOC_LIBRARY)
- set(tcmalloc_FOUND TRUE)
-endif (TCMALLOC_INCLUDE_DIR AND TCMALLOC_LIBRARY)
diff --git a/cmake/Package.cmake b/cmake/Package.cmake
deleted file mode 100644
index 5b2d61c5..00000000
--- a/cmake/Package.cmake
+++ /dev/null
@@ -1,53 +0,0 @@
-if(CMAKE_BUILD_TYPE STREQUAL "Debug")
- set(MY_RPM_NAME_PREFIX "${lib_name}-debug")
-else()
- set(MY_RPM_NAME_PREFIX "${lib_name}")
-endif()
-
-message(STATUS "Package: ${MY_RPM_NAME_PREFIX}")
-
-set(CPACK_PACKAGE_VECDOR "MESA")
-set(CPACK_PACKAGE_VERSION_MAJOR "${VERSION_MAJOR}")
-set(CPACK_PACKAGE_VERSION_MINOR "${VERSION_MINOR}")
-set(CPACK_PACKAGE_VERSION_PATCH "${VERSION_PATCH}.${VERSION_BUILD}")
-set(CPACK_PACKAGING_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX})
-set(CPACK_PACKAGE_VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}.${VERSION_BUILD}")
-execute_process(COMMAND bash -c "echo -ne \"`uname -r | awk -F'.' '{print $5\".\"$6\".\"$7}'`\"" OUTPUT_VARIABLE SYSTEM_VERSION)
-
-execute_process(COMMAND sh changelog.sh WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/cmake)
-SET(CPACK_RPM_CHANGELOG_FILE ${PROJECT_SOURCE_DIR}/cmake/changelog.txt)
-
-# RPM Build
-set(CPACK_GENERATOR "RPM")
-set(CPACK_RPM_PACKAGE_VENDOR "MESA")
-set(CPACK_RPM_PACKAGE_AUTOREQPROV "yes")
-set(CPACK_RPM_PACKAGE_RELEASE_LIBRARY "on")
-set(CPACK_RPM_DEBUGINFO_PACKAGE "on")
-set(CPACK_RPM_PACKAGE_DEBUG 1)
-
-set(CPACK_RPM_COMPONENT_INSTALL ON)
-set(CPACK_COMPONENTS_IGNORE_GROUPS 1)
-set(CPACK_COMPONENTS_GROUPING ONE_PER_GROUP)
-set(CPACK_COMPONENT_HEADER_DISPLAY_NAME "develop")
-
-set(CPACK_COMPONENT_LIBRARY_REQUIRED TRUE)
-set(CPACK_RPM_LIBRARY_PACKAGE_NAME ${MY_RPM_NAME_PREFIX})
-set(CPACK_RPM_LIBRARY_FILE_NAME "${CPACK_RPM_LIBRARY_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${SYSTEM_VERSION}.rpm")
-set(CPACK_RPM_LIBRARY_DEBUGINFO_FILE_NAME "${CPACK_RPM_LIBRARY_PACKAGE_NAME}-debuginfo-${CPACK_PACKAGE_VERSION}-${SYSTEM_VERSION}.rpm")
-
-set(CPACK_COMPONENT_LIBRARY_GROUP "library")
-set(CPACK_COMPONENT_PROFILE_GROUP "library")
-
-set(CPACK_RPM_HEADER_PACKAGE_CONFLICTS ${CPACK_RPM_HEADER_PACKAGE_NAME})
-
-set(CPACK_COMPONENTS_ALL LIBRARY PROFILE)
-
-
-set(CPACK_BUILD_SOURCE_DIRS "${CMAKE_SOURCE_DIR}")
-
-# Must uninstall the debug package before install release package
-set(CPACK_RPM_PACKAGE_CONFLICTS ${MY_RPM_NAME_PREFIX})
-
-# set(CPACK_STRIP_FILES TRUE)
-include(CPack)
-
diff --git a/cmake/Version.cmake b/cmake/Version.cmake
deleted file mode 100644
index 5b4f8380..00000000
--- a/cmake/Version.cmake
+++ /dev/null
@@ -1,53 +0,0 @@
-# Using autorevision.sh to generate version information
-
-set(__SOURCE_AUTORESIVISION ${CMAKE_SOURCE_DIR}/autorevision.sh)
-set(__AUTORESIVISION ${CMAKE_BINARY_DIR}/autorevision.sh)
-set(__VERSION_CACHE ${CMAKE_SOURCE_DIR}/version.txt)
-set(__VERSION_CONFIG ${CMAKE_BINARY_DIR}/version.cmake)
-
-file(COPY ${__SOURCE_AUTORESIVISION} DESTINATION ${CMAKE_BINARY_DIR}
- FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE
- WORLD_READ WORLD_EXECUTE)
-
-# execute autorevision.sh to generate version information
-execute_process(COMMAND ${__AUTORESIVISION} -t cmake -o ${__VERSION_CACHE}
- OUTPUT_FILE ${__VERSION_CONFIG} ERROR_QUIET)
-include(${__VERSION_CONFIG})
-
-# extract major, minor, patch version from git tag
-string(REGEX REPLACE "^v([0-9]+)\\..*" "\\1" VERSION_MAJOR "${VCS_TAG}")
-string(REGEX REPLACE "^v[0-9]+\\.([0-9]+).*" "\\1" VERSION_MINOR "${VCS_TAG}")
-string(REGEX REPLACE "^v[0-9]+\\.[0-9]+\\.([0-9]+).*" "\\1" VERSION_PATCH "${VCS_TAG}")
-
-if(NOT VERSION_MAJOR)
- set(VERSION_MAJOR 1)
-endif()
-
-if(NOT VERSION_MINOR)
- set(VERSION_MINOR 0)
-endif()
-
-if(NOT VERSION_PATCH)
- set(VERSION_PATCH 0)
-endif()
-
-set(VERSION "${VERSION_MAJOR}_${VERSION_MINOR}_${VERSION_PATCH}")
-set(VERSION_BUILD "${VCS_SHORT_HASH}")
-
-# print information
-message(STATUS "Version: ${VERSION}-${VERSION_BUILD}")
-
-if(NOT DEFINE_GIT_VERSION)
- option(DEFINE_GIT_VERSION "Set DEFINE_GIT_VERSION to OFF" OFF)
-
-set(GIT_VERSION
- "${VERSION}-${CMAKE_BUILD_TYPE}-${VERSION_BUILD}-${VCS_BRANCH}-${VCS_TAG}-${VCS_DATE}")
-string(REGEX REPLACE "[-:+/\\.]" "_" GIT_VERSION ${GIT_VERSION})
-
-if(DEFINE_GIT_VERSION)
- add_definitions(-DGIT_VERSION=${GIT_VERSION})
- option(DEFINE_GIT_VERSION "Set DEFINE_GIT_VERSION to OFF" ON)
-endif()
-
-endif()
-
diff --git a/cmake/changelog.sh b/cmake/changelog.sh
deleted file mode 100755
index 999d5fc6..00000000
--- a/cmake/changelog.sh
+++ /dev/null
@@ -1,9 +0,0 @@
-#########################################################################
-# File Name: changelog.sh
-# Author: pxz
-# Created Time: Mon 31 Aug 2020 10:06:56 AM CST
-#########################################################################
-#!/bin/bash
-branch=`git status | grep branch | awk '{print $NF}'`
-git log --branches=$branch --no-merges --date=local --show-signature --pretty="* %ad %an %ae %nhash: %H%ncommit:%n%B" | awk -F"-" '{print "- "$0}' | sed 's/- \*/\*/g' | sed 's/- $//g' | sed 's/-/ -/g' | sed 's/[0-9]\{2\}:[0-9]\{2\}:[0-9]\{2\}//g' > changelog.txt
-
diff --git a/cmake/changelog.txt b/cmake/changelog.txt
deleted file mode 100644
index 08c9a21f..00000000
--- a/cmake/changelog.txt
+++ /dev/null
@@ -1,37 +0,0 @@
-* Thu Sep 24 2020 pengxuanzheng pengxuanzheng@geedgenetworks.com
- - hash: caa5fe48df0896638ee1afc4c8252053d8ba03fb
- - commit:
- - 修改example名称
-
-* Wed Sep 23 2020 pengxuanzheng pengxuanzheng@geedgenetworks.com
- - hash: f439b8a9ab926d87f3a3ae03d5061d3962a35ca5
- - commit:
- - 线程池支持
-
-* Tue Sep 22 2020 pengxuanzheng pengxuanzheng@geedgenetworks.com
- - hash: 97bd7ffb2ef28a36089a5e8ba4ab5559dd661004
- - commit:
- - 修改cmakelist
-
-* Tue Sep 22 2020 pengxuanzheng pengxuanzheng@geedgenetworks.com
- - hash: 812b8a0eb9f4e7cbadaaa1ccfa98309a14a72db5
- - commit:
- - 修改buffer模式下的数据输入
-
-* Mon Sep 21 2020 pengxuanzheng pengxuanzheng@geedgenetworks.com
- - hash: eb41917cb28d1ec887e3502ed30324f88a183bcc
- - commit:
- - 修改并增加新接口
-
-* Mon Sep 14 2020 pengxuanzheng pengxuanzheng@geedgenetworks.com
- - hash: a00d892928a9ca350e4388e09323fa799bd8fded
- - commit:
- - 1.修复SSL connect error 问题
- - 2.修复hos_create_bucket时,出现bucekt already exits的问题
- - 3.修复upload时,远端地址无法解析的问题
-
-* Fri Sep 11 2020 pengxuanzheng pengxuanzheng@geedgenetworks.com
- - hash: cd0649bfbcadaeca8d7e37b31d3e9a191160ce04
- - commit:
- - init
-
diff --git a/example/hos_write_complete.cpp b/example/hos_write_complete.cpp
index f47523bb..ebe13fbc 100644
--- a/example/hos_write_complete.cpp
+++ b/example/hos_write_complete.cpp
@@ -106,13 +106,18 @@ int main(int argc, char *argv[])
}
debuginfo("hos_verify_bucket success ... \n");
-#if 0
- fd = hos_open_fd(handle, bucket, object, callback, (void *)&data, 0, mode);
+#if 1
+ mode = FILE_MODE;
+ for (i = 0; i < test_times; i++)
+ {
+ fd[i] = hos_open_fd(handle, bucket, object, callback, (void *)&data, 0, mode);
+ }
+
debuginfo("hos_upload_file start ...\n");
clock_gettime(CLOCK_MONOTONIC, &start);
for (i = 0; i < test_times; i++)
{
- hos_write(fd, object, 0, 0);
+ hos_write(fd[i], object, 0, 0, 0);
}
clock_gettime(CLOCK_MONOTONIC, &end);
time = calc_time(start, end);
@@ -121,8 +126,8 @@ int main(int argc, char *argv[])
debuginfo("hos_upload_file end ...\n");
#else
- mode = BUFF_MODE;
- for (i = 0; i < 10000; i++)
+ mode = BUFF_MODE | APPEND_MODE;
+ for (i = 0; i < test_times; i++)
{
fd[i] = hos_open_fd(handle, bucket, object, callback, (void *)&data, 0, mode);
}
@@ -130,7 +135,7 @@ int main(int argc, char *argv[])
clock_gettime(CLOCK_MONOTONIC, &start);
for (i = 0; i < test_times; i++)
{
- hos_write(fd[i], buf, buf_size, 0);
+ hos_write(fd[i], buf, buf_size, 0, i);
}
clock_gettime(CLOCK_MONOTONIC, &end);
time = calc_time(start, end);
diff --git a/src/hos_client.cpp b/src/hos_client.cpp
index 797a075d..659db6c5 100644
--- a/src/hos_client.cpp
+++ b/src/hos_client.cpp
@@ -87,14 +87,11 @@ hos_client_handle hos_client_create(const char *endpoint, const char *accesskeyi
Aws::Client::ClientConfiguration config;
Aws::Auth::AWSCredentials credentials(accesskeyid, secretkey);
+ //初始化
config.endpointOverride = endpoint;
config.verifySSL = false;
config.enableEndpointDiscovery = true;
- //std::shared_ptr pooled_thread = Aws::MakeShared("ClientConfigration");
- //std::shared_ptr test = std::make_shared(1000);
- //config.executor(Aws::MakeShared("ClientConfiguration"));
- //config.executor = std::dynamic_pointer_cast(config.executor);
- config.executor = std::shared_ptr(std::make_shared(100));
+ config.executor = std::shared_ptr(std::make_shared(100));//支持线程池
handle->S3Client = new Aws::S3::S3Client(credentials, config, Aws::Client::AWSAuthV4Signer::PayloadSigningPolicy::Never, false);
handle->append_size = 30 * 1024 * 1024;
@@ -250,11 +247,12 @@ int hos_open_fd(hos_client_handle handle, const char *bucket, const char *object
return fd;
}
-int hos_write(size_t fd, const char *stream, size_t stream_len, size_t thread_id)
+int hos_write(size_t fd, const char *stream, size_t stream_len, size_t thread_id, size_t position)
{
struct stat buffer;
hos_info_t *hos_info = NULL;
hos_client_handle handle = NULL;
+ char num[128];
char buf[128];
if ((fd == 0) || (stream == NULL) || (thread_id > MAX_THREAD_NUM))
{
@@ -276,12 +274,24 @@ int hos_write(size_t fd, const char *stream, size_t stream_len, size_t thread_id
request.SetKey(hos_info->object);
//TODO APPEND MODE
+ snprintf(num, 128, "%lu", position);
+ Aws::Map headers;
+ if (hos_info->mode & APPEND_MODE)
+ {
+ headers["x-hos-upload-type"] = "append";
+ headers["x-hos_position"] = num;
+ request.SetMetadata(headers);
+#if 0
+ request.AddMetadata("x-hos-upload-type", "append");
+ request.AddMetadata("x-hos-position", num);
+#endif
+ }
//设置上传数据类型
if (hos_info->mode & BUFF_MODE)
{
//BUFF_MODE
-#if 0
+#if 1
const std::shared_ptr input_data =
Aws::MakeShared(stream, stream + stream_len);
Aws::String buffer (stream, stream_len);
diff --git a/src/hos_client.h b/src/hos_client.h
index f00a255b..961539ea 100644
--- a/src/hos_client.h
+++ b/src/hos_client.h
@@ -134,7 +134,7 @@ int hos_open_fd(hos_client_handle handle, const char *bucket, const char *object
* size_t thread_id 线程ID
* 返回值 int 成功返回0,失败返回hoserros错误码
*************************************************************************************/
-int hos_write(size_t fd, const char *stream, size_t stream_len, size_t thread_id);
+int hos_write(size_t fd, const char *stream, size_t stream_len, size_t thread_id, size_t position);
/*************************************************************************************
* 函数名: hos_close_fd
* 参数: size_t fd fd
diff --git a/support/CMakeLists.txt b/support/CMakeLists.txt
index f68d958a..28d882fa 100644
--- a/support/CMakeLists.txt
+++ b/support/CMakeLists.txt
@@ -3,7 +3,7 @@ include(ExternalProject)
set(AWSS3_ROOT ${CMAKE_CURRENT_BINARY_DIR})
set(AWSS3_URL ${CMAKE_CURRENT_SOURCE_DIR}/aws-sdk-cpp-master.zip)
set(AWSS3_URL_MD5 a94cce4fe5003acf55fe1eac8c49ad4f)
-set(AWSS3_CONFIGURE cd ${AWSS3_ROOT}/aws-sdk-cpp-master/src/aws-sdk-cpp-master && cmake . -DBUILD_ONLY=s3)
+set(AWSS3_CONFIGURE cd ${AWSS3_ROOT}/aws-sdk-cpp-master/src/aws-sdk-cpp-master && cmake . -DBUILD_ONLY=s3 -DCMAKE_BUILD_TYPE=Debug)
set(AWSS3_MAKE cd ${AWSS3_ROOT}/aws-sdk-cpp-master/src/aws-sdk-cpp-master && make)
set(AWSS3_INSTALL cd ${AWSS3_ROOT}/aws-sdk-cpp-master/src/aws-sdk-cpp-master && make install PREFIX=${SUPPORT_INSTALL_PREFIX})