Some checks failed
BlockStorage/repertory_osx/pipeline/head This commit looks good
BlockStorage/repertory_windows/pipeline/head This commit looks good
BlockStorage/repertory/pipeline/head There was a failure building this commit
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
BlockStorage/repertory_osx_builds/pipeline/head There was a failure building this commit
### Issues * \#1 \[bug\] Unable to mount S3 due to 'item_not_found' exception * \#2 Require bucket name for S3 mounts * \#3 \[bug\] File size is not being updated in S3 mount * \#4 Upgrade to libfuse-3.x.x * \#5 Switch to renterd for Sia support * \#6 Switch to cpp-httplib to further reduce dependencies * \#7 Remove global_data and calculate used disk space per provider * \#8 Switch to libcurl for S3 mount support ### Changes from v1.x.x * Added read-only encrypt provider * Pass-through mount point that transparently encrypts source data using `XChaCha20-Poly1305` * Added S3 encryption support via `XChaCha20-Poly1305` * Added replay protection to remote mounts * Added support base64 writes in remote FUSE * Created static linked Linux binaries for `amd64` and `aarch64` using `musl-libc` * Removed legacy Sia renter support * Removed Skynet support * Fixed multiple remote mount WinFSP API issues on \*NIX servers * Implemented chunked read and write * Writes for non-cached files are performed in chunks of 8Mib * Removed `repertory-ui` support * Removed `FreeBSD` support * Switched to `libsodium` over `CryptoPP` * Switched to `XChaCha20-Poly1305` for remote mounts * Updated `GoogleTest` to v1.14.0 * Updated `JSON for Modern C++` to v3.11.2 * Updated `OpenSSL` to v1.1.1w * Updated `RocksDB` to v8.5.3 * Updated `WinFSP` to 2023 * Updated `boost` to v1.78.0 * Updated `cURL` to v8.3.0 * Updated `zlib` to v1.3 * Use `upload_manager` for all providers * Adds a delay to uploads to prevent excessive API calls * Supports re-upload after mount restart for incomplete uploads * NOTE: Uploads for all providers are full file (no resume support) * Multipart upload support is planned for S3 Reviewed-on: #9
134 lines
3.0 KiB
Bash
134 lines
3.0 KiB
Bash
#! /bin/sh
|
|
# igawk --- like gawk but do @include processing
|
|
#
|
|
# Arnold Robbins, arnold@skeeve.com, Public Domain
|
|
# July 1993
|
|
|
|
if [ "$1" = debug ]
|
|
then
|
|
set -x
|
|
shift
|
|
fi
|
|
|
|
# A literal newline, so that program text is formatted correctly
|
|
n='
|
|
'
|
|
|
|
# Initialize variables to empty
|
|
program=
|
|
opts=
|
|
|
|
while [ $# -ne 0 ] # loop over arguments
|
|
do
|
|
case $1 in
|
|
--) shift; break;;
|
|
|
|
-W) shift
|
|
# The ${x?'message here'} construct prints a
|
|
# diagnostic if $x is the null string
|
|
set -- -W"${@?'missing operand'}"
|
|
continue;;
|
|
|
|
-[vF]) opts="$opts $1 '${2?'missing operand'}'"
|
|
shift;;
|
|
|
|
-[vF]*) opts="$opts '$1'" ;;
|
|
|
|
-f) program="$program$n@include ${2?'missing operand'}"
|
|
shift;;
|
|
|
|
-f*) f=`expr "$1" : '-f\(.*\)'`
|
|
program="$program$n@include $f";;
|
|
|
|
-[W-]file=*)
|
|
f=`expr "$1" : '-.file=\(.*\)'`
|
|
program="$program$n@include $f";;
|
|
|
|
-[W-]file)
|
|
program="$program$n@include ${2?'missing operand'}"
|
|
shift;;
|
|
|
|
-[W-]source=*)
|
|
t=`expr "$1" : '-.source=\(.*\)'`
|
|
program="$program$n$t";;
|
|
|
|
-[W-]source)
|
|
program="$program$n${2?'missing operand'}"
|
|
shift;;
|
|
|
|
-[W-]version)
|
|
echo igawk: version 2.0 1>&2
|
|
gawk --version
|
|
exit 0 ;;
|
|
|
|
-[W-]*) opts="$opts '$1'" ;;
|
|
|
|
*) break;;
|
|
esac
|
|
shift
|
|
done
|
|
|
|
if [ -z "$program" ]
|
|
then
|
|
program=${1?'missing program'}
|
|
shift
|
|
fi
|
|
|
|
# At this point, `program' has the program.
|
|
expand_prog='
|
|
|
|
function pathto(file, i, t, junk)
|
|
{
|
|
if (index(file, "/") != 0)
|
|
return file
|
|
|
|
for (i = 1; i <= ndirs; i++) {
|
|
t = (pathlist[i] "/" file)
|
|
if ((getline junk < t) > 0) {
|
|
# found it
|
|
close(t)
|
|
return t
|
|
}
|
|
}
|
|
return ""
|
|
}
|
|
BEGIN {
|
|
path = ENVIRON["AWKPATH"]
|
|
ndirs = split(path, pathlist, ":")
|
|
for (i = 1; i <= ndirs; i++) {
|
|
if (pathlist[i] == "")
|
|
pathlist[i] = "."
|
|
}
|
|
stackptr = 0
|
|
input[stackptr] = ARGV[1] # ARGV[1] is first file
|
|
|
|
for (; stackptr >= 0; stackptr--) {
|
|
while ((getline < input[stackptr]) > 0) {
|
|
if (tolower($1) != "@include") {
|
|
print
|
|
continue
|
|
}
|
|
fpath = pathto($2)
|
|
if (fpath == "") {
|
|
printf("igawk:%s:%d: cannot find %s\n",
|
|
input[stackptr], FNR, $2) > "/dev/stderr"
|
|
continue
|
|
}
|
|
if (! (fpath in processed)) {
|
|
processed[fpath] = input[stackptr]
|
|
input[++stackptr] = fpath # push onto stack
|
|
} else
|
|
print $2, "included in", input[stackptr],
|
|
"already included in",
|
|
processed[fpath] > "/dev/stderr"
|
|
}
|
|
close(input[stackptr])
|
|
}
|
|
}' # close quote ends `expand_prog' variable
|
|
|
|
processed_program=`gawk -- "$expand_prog" /dev/stdin <<EOF
|
|
$program
|
|
EOF
|
|
`
|
|
eval gawk $opts -- '"$processed_program"' '"$@"'
|