2.0.0-rc (#9)
### 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
This commit is contained in:
133
bin/igawk
Normal file
133
bin/igawk
Normal file
@@ -0,0 +1,133 @@
|
||||
#! /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"' '"$@"'
|
||||
Reference in New Issue
Block a user