dot

packages and services management
Log | Files | Refs | README

commit 1c85d3222fff106666757c3e0cee76a78b5fca3b
parent 3b0426efff52df2381158d593ca14c24f29c7e6b
Author: Josuah Demangeon <mail@josuah.net>
Date:   Sun,  4 Mar 2018 16:45:02 +0100

fix tinc get subnet for tinc-up

Diffstat:
Mbin/io | 113+++++++++++++------------------------------------------------------------------
Abin/io-abduco | 8++++++++
Abin/io-find | 5+++++
Abin/io-fstab | 10++++++++++
Abin/io-grep | 10++++++++++
Abin/io-lineart | 12++++++++++++
Abin/io-mail | 13+++++++++++++
Abin/io-man | 8++++++++
Abin/io-net | 5+++++
Abin/io-ps | 7+++++++
Abin/io-user | 10++++++++++
Mbin/lstree | 2+-
Mbin/xdg-open | 50+-------------------------------------------------
Abin/xdg-store | 279+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Abin/xdg-uri | 47+++++++++++++++++++++++++++++++++++++++++++++++
Aman/ascii.7 | 50++++++++++++++++++++++++++++++++++++++++++++++++++
Apack/sacc/build | 2++
Mtinc/tinc-up | 2+-
18 files changed, 487 insertions(+), 146 deletions(-)

diff --git a/bin/io b/bin/io @@ -1,102 +1,25 @@ #!/bin/sh -# various interactive selection menu wrappers + +# pick a file to open with xdg-open with iomenu export LC_COLLATE='C' -cmd="${1:-open}" -[ "$#" -gt 0 ] && shift +cache="$HOME/.cache/find" +mkdir -p "$cache" + +case "$PWD" in ("$HOME"/*) + dir=$(printf %s "${PWD##$HOME/}" | sed 's|/.*||') + find "$HOME/$dir" '(' -name .git -o -name CVS ')' -prune -o -print | + sort > "$cache/$dir" +esac -case "$cmd" in -(a|abduco) - id=$({ printf '#'; abduco; } | iomenu -# | cut -f4) - [ "$SSH_TTY" ] && e='^Z' || e='^\' - [ "$id" ] && ABDUCO="$id" exec abduco -e "$e" -A "$id" "$@" - ;; -(f|find) - find "${@:-.}" -name .git -prune -o -print | iomenu - ;; -(fs) - { - printf '#/etc/fstab\n' - column -ts ' ' < /etc/fstab - printf '#mount\n' - mount | column -ts ' ' - } | iomenu -# - ;; -(g|grep) - less "$(find "${1:-.}" -name .git -prune -o -type f | sort | - xargs -n 128 awk ' - FNR == 1 { printf("#%s\n", FILENAME); } - { printf("%7s\t%s\n", FNR, $0); } - ' | iomenu -# | cut -f 1)" - ;; -(l|lineart) - iomenu << 'EOF' | sed 's/^[^ ]* *//' -put sunglasses on (•_•) / ( •_•)>⌐■-■ / (⌐■_■) -shrug ¯\_(ツ)_/¯ -rose --{@ -wizard (∩`-´)⊃━☆゚.*・。゚ -wizard ( `-`)=- *.',~_` -:p :þ -EOF - ;; -(m|mail) - mdirs "$HOME/var/mail" | sort | - while IFS='' read -r dir - do - printf '%s\t%s\n' "$(mlist -s "$dir" | wc -l | sed 's/ 0/ ./')" "$dir" - done | iomenu | cut -f 2 | mlist | mthread | msort -r -d | - mseq -S | mscan -f '%6n %u %D %20f %t%2i%120S' | iomenu | - sed -r 's/^ *([0-9]*) .*/\1/'| - xargs mless - ;; -(man) - man -k ' ' | sed -r ' - s/ - / - / - s/(.{25}[^ ]* ) * - /\1- / - ' | iomenu | sed -r 's/([_a-zA-Z0-9]*).*\(([0-9p]+).*\).*/\2 \1/' | - xargs man - ;; -(n|netstat) - netstat -na | sed 's/^[AP]/#&/' | iomenu -# - ;; -(o|open) - cache="$HOME/.cache/find" - mkdir -p "$cache" +exec xdg-open "$(find "$HOME" -maxdepth 1 -mindepth 1 | + sort | + cut -c $((${#HOME} + 2))- | + xargs -I {} printf '%s/%s\n' "$cache" {} | + xargs -I {} cat "$cache" {} 2> /dev/null | + cat - "$HOME/etc/uri" | + iomenu -# | + cut -f 2-)" - case "$PWD" in ("$HOME"/*) - dir=$(printf %s "${PWD##$HOME/}" | sed 's|/.*||') - find "$HOME/$dir" '(' -name .git -o -name CVS ')' -prune -o -print | - sort > "$cache/$dir" - esac - exec xdg-open "$(find "$HOME" -maxdepth 1 -mindepth 1 | - sort | - cut -c $((${#HOME} + 2))- | - xargs -I {} printf '%s/%s\n' "$cache" {} | - xargs -I {} cat "$cache" {} 2> /dev/null | - cat - "$HOME/etc/uri" | - iomenu -# | - cut -f 2-)" - ;; -(ps) - ps="ps -o pid,user,args" - { printf '#'; $ps -ax || $ps; } | iomenu -# | - sed -r 's/[^ ]* *([0-9]*).*/\1/' - ;; -(p|passwd) - { - printf '#/etc/passwd\n' - column -ts : < /etc/passwd - printf '#/etc/group\n' - column -ts : < /etc/group - } | iomenu -# - ;; -(*) - printf 'usage: %s ' "${0##*/}" - sed -n '/^(/ { s/^(//; s/)$//; s/|.\(.*\)/[\1]/; /^\*$/d; p; }' "$0" | - tr '\n' '|' | sed 's/|/ | /g' | fold -sw 60 | - sed 's/^[ |]*//; s/[ |]*$//; 2,$ s/^/ /' - printf '\n' - ;; -esac diff --git a/bin/io-abduco b/bin/io-abduco @@ -0,0 +1,8 @@ +#!/bin/sh -e + +# iomenu-based abduco session picker + +id=$({ printf '#'; abduco; } | iomenu -# | cut -f4) +[ "$SSH_TTY" ] && e='^Z' || e='^\' + +[ "$id" ] && ABDUCO="$id" exec abduco -e "$e" -A "$id" "$@" diff --git a/bin/io-find b/bin/io-find @@ -0,0 +1,5 @@ +#!/bin/sh -e + +# find a file from current directory with iomenu + +find "${@:-.}" -name .git -prune -o -print | iomenu diff --git a/bin/io-fstab b/bin/io-fstab @@ -0,0 +1,10 @@ +#!/bin/sh -e + +# display mounts and fstab in iomenu + +{ + printf '#/etc/fstab\n' + column -ts ' ' < /etc/fstab + printf '#mount\n' + mount | column -ts ' ' +} | iomenu -# diff --git a/bin/io-grep b/bin/io-grep @@ -0,0 +1,10 @@ +#!/bin/sh -e + +# search interactively on the content of multiple files with iomenu + +export LC_COLLATE='C' +less "$(find "${1:-.}" -name .git -prune -o -type f | sort | + xargs -n 128 awk ' + FNR == 1 { printf("#%s\n", FILENAME); } + { printf("%7s\t%s\n", FNR, $0); } + ' | iomenu -# | cut -f 1)" diff --git a/bin/io-lineart b/bin/io-lineart @@ -0,0 +1,12 @@ +#!/bin/sh -e + +# line-art collection searched with iomenu + +iomenu << 'EOF' | sed 's/^[^ ]* *//' +put sunglasses on (•_•) / ( •_•)>⌐■-■ / (⌐■_■) +shrug ¯\_(ツ)_/¯ +rose --{@ +wizard (∩`-´)⊃━☆゚.*・。゚ +wizard ( `-`)=- *.',~_` +:p :þ +EOF diff --git a/bin/io-mail b/bin/io-mail @@ -0,0 +1,13 @@ +#!/bin/sh + +# client for mblaze with iomenu + +export LC_COLLATE='C' + +mdirs "$HOME/var/mail" | sort | while IFS='' read -r dir +do + printf '%s\t%s\n' "$(mlist -s "$dir" | wc -l | sed 's/ 0/ ./')" "$dir" +done | iomenu | cut -f 2 | mlist | msort -r -d | mseq -S + +mscan -f '%6n %u %D %20f %t%2i%120S' | iomenu | + sed -r 's/^ *([0-9]*) .*/\1/'| xargs mless diff --git a/bin/io-man b/bin/io-man @@ -0,0 +1,8 @@ +#!/bin/sh + +# man page picker with iomenu + +man -k ' ' | sed -r ' + s/ - / - / + s/(.{25}[^ ]* ) * - /\1- / +' | iomenu | sed -r 's/([_a-zA-Z0-9]*).*\(([0-9p]+).*\).*/\2 \1/' | xargs man diff --git a/bin/io-net b/bin/io-net @@ -0,0 +1,5 @@ +#!/bin/sh -e + +# searchable netstat results with iomenu + +netstat "${@--nat}" | sed 's/^[AP]/#&/' | iomenu -# diff --git a/bin/io-ps b/bin/io-ps @@ -0,0 +1,7 @@ +#!/bin/sh -e + +# process list picker with iomenu + +ps="ps -o pid,user,args" + +{ printf '#'; $ps -ax || $ps; } | iomenu -# | sed -r 's/[^ ]* *([0-9]*).*/\1/' diff --git a/bin/io-user b/bin/io-user @@ -0,0 +1,10 @@ +#!/bin/sh -e + +# display /etc/passwd and /etc/group in iomenu + +{ + printf '#/etc/passwd\n' + column -ts : < /etc/passwd + printf '#/etc/group\n' + column -ts : < /etc/group +} | iomenu -# diff --git a/bin/lstree b/bin/lstree @@ -25,7 +25,7 @@ find . -name '*.git' -prune -o -name CVS -prune -o -exec ls -ld {} + | awk -v LINE='| ' -v NODE='|- ' -v TAIL='`- ' -v VOID=' ' ' { - sub(" \.$", "", $0); + sub(" \\.$", "", $0); sub(" -> .*", "", $0); infos = $0; sub(" \\./.*", "", infos); diff --git a/bin/xdg-open b/bin/xdg-open @@ -7,54 +7,6 @@ tty | grep -q -e '^/dev/pts/.*' -e '^/dev/tty.*' || [ -e "$1" ] && set -- "$(cd "$(dirname "$1")" && pwd)/$(basename "$1")" printf '\033]0;%s\a' "$1" -#--- parse uri ----------------------------------------------------------------- -# scheme://[user[:pass]@]host[:port][/path] -IFS=' ' read scheme user pass host port path << EOF -$(printf %s "$1" | awk '{ - gsub(" ", "%20"); - gsub("\t", "%0b"); - - scheme = $0; - if (sub("^[^:/]*://", "", $0) > 0) - sub("://.*", "", scheme); - else - scheme = "."; - - user = $0; - if (sub("^[^@/]*@", "", $0) > 0) - sub("@.*", "", user); - else - user = "."; - - pass = user; - if (sub(":.*", "", user) > 0) - sub("[^:]*:", "", pass) ; - else - pass = "."; - - host = $0 - if (sub("^[^:]*:", ":", $0) > 0) - sub(":.*", "", host); - else if (sub("[^/]*/", "/", $0) > 0) - sub("/.*", "", host); - - port = $0 - if (sub("^:[0-9]+:", "", $0) > 0 || sub("^:[0-9]+/", "/", $0) > 0) { - sub(":", "", port); - sub("[:/].*", "", port); - } else if (sub("^:[0-9]+$", "", $0) > 0) { - sub(":", "", port); - } else { - port = "."; - } - - path = $0; - sub("[#?].*", "", path); - - printf("%s\t%s\t%s\t%s\t%s\t%s", scheme, user, pass, host, port, path); -}') -EOF - #--- hierarchical uri ---------------------------------------------------------- case "$host" in @@ -210,7 +162,7 @@ esac exec opusdec "$1" ;; (*.webm|*.mp4|*.mkv|*.ogv|*.avi|*.mp3|*.flac|*.ogg) - exec avplay "$1" + exec ffplay "$1" ;; (*/music/*) find "$1" -type f | sort | while IFS='' read -r song diff --git a/bin/xdg-store b/bin/xdg-store @@ -0,0 +1,279 @@ +#!/bin/sh +# override the xdg-open utility + +tty | grep -q -e '^/dev/pts/.*' -e '^/dev/tty.*' || + exec st -f terminus:pixelsize=16 -e "$0" "$@" + +[ -e "$1" ] && set -- "$(cd "$(dirname "$1")" && pwd)/$(basename "$1")" +printf '\033]0;%s\a' "$1" + +#--- parse uri ----------------------------------------------------------------- +# scheme://[user[:pass]@]host[:port][/path] +IFS=' ' read scheme user pass host port path << EOF +$(printf %s "$1" | awk '{ + gsub(" ", "%20"); + gsub("\t", "%0b"); + + scheme = $0; + if (sub("^[^:/]*://", "", $0) > 0) + sub("://.*", "", scheme); + else + scheme = "."; + + user = $0; + if (sub("^[^@/]*@", "", $0) > 0) + sub("@.*", "", user); + else + user = "."; + + pass = user; + if (sub(":.*", "", user) > 0) + sub("[^:]*:", "", pass) ; + else + pass = "."; + + host = $0 + if (sub("^[^:]*:", ":", $0) > 0) + sub(":.*", "", host); + else if (sub("[^/]*/", "/", $0) > 0) + sub("/.*", "", host); + + port = $0 + if (sub("^:[0-9]+:", "", $0) > 0 || sub("^:[0-9]+/", "/", $0) > 0) { + sub(":", "", port); + sub("[:/].*", "", port); + } else if (sub("^:[0-9]+$", "", $0) > 0) { + sub(":", "", port); + } else { + port = "."; + } + + path = $0; + sub("[#?].*", "", path); + + printf("%s\t%s\t%s\t%s\t%s\t%s", scheme, user, pass, host, port, path); +}') +EOF + +#--- hierarchical uri ---------------------------------------------------------- + +case "$host" in +(*.onion) + exec torsocks "$0" "$@" + ;; +esac + +case "$scheme" in +(9p) + dir="$HOME/var/9p/$host" + mkdir -p "$dir" + exec doas 9pfs "$host" "$dir" + ;; +(ftp) + exec ftp "$1" + ;; +(git) + mkdir -p "$HOME/git/$host" + cd "$HOME/git/$host" || exit 1 + exec git clone "$1" + ;; +(gopher) + exec sacc "$1" + ;; +(http|https) + case "$host" in + (vimeo.com|*youtube.com|*youtu.be|*openload.co*) + mkdir -p "$HOME/lib/video/$host" + cd "$HOME/lib/video/$host" + youtube-dl "$1" + exec "$0" "$HOME/lib/video/$host"/*"${1##*[=/]}"* + ;; + (*bandcamp.com) + mkdir -p "$HOME/lib/music/$host" + cd "$HOME/lib/music/$host" + exec youtube-dl "$1" + ;; + esac + + case "$path" in + (*.torrent) + mkdir -p "$HOME/var/torrent" + curl -Lo "$HOME/var/torrent/${path##*/}" "$1" + exec "$0" "$HOME/var/torrent/${path##*/}" + ;; + (*.jpg|*.JPG|*.jpeg|*.JPEG|*.png|*.PNG|*.gif) + mkdir -p "$HOME/lib/image/$host/" + curl -Lo "$HOME/lib/image/$host/${path##*/}" "$1" + exec "$0" "$HOME/lib/image/$host/${path##*/}" + ;; + (*.opus|*.ogg|*.mp3|*.flac) + mkdir -p "$HOME/lib/music/$host" + curl -Lo "$HOME/lib/music/$host/${path##*/}" "$1" + exec "$0" "$HOME/lib/music/$host/${path##*/}" + ;; + (*.webm|*.mp4|*.mkv|*.ogv|*.avi) + mkdir -p "$HOME/lib/video/$host" + curl -Lo "$HOME/lib/video/$host/${path##*/}" "$1" + exec "$0" "$HOME/lib/video/$host/${path##*/}" + ;; + (*.pdf|*.ps) + mkdir -p "$HOME/lib/doc/$host" + curl -Lo "$HOME/lib/doc/$host/${path##*/}" "$1" + exec "$0" "$HOME/lib/doc/$host/${path##*/}" + ;; + (*.txt) + mkdir -p "$HOME/lib/text/$host" + curl -Lo "$HOME/lib/text/$host/${path##*/}" "$1" + exec "$0" "$HOME/lib/text/$host/${path##*/}" + ;; + (*.gz|*.bz2|*.xz|*.tgz|*.tgz|*.tbz2|*.txz|*.zip|*.rar) + mkdir -p "$HOME/tmp" + curl -Lo "$HOME/tmp/${path##*/}" "$1" + exec "$0" "$HOME/tmp/${path##*/}" + ;; + (*) + exec firefox "$1" + ;; + esac + + ;; +(irc) + [ "$port" = . ] && port='6667' + "$HOME/etc/sv/ii" "$host" "$port" + [ "$path" = . ] && exit + sleep 3 + printf '/j #%s\n' "$path" > "$HOME/var/irc/$host/in" + ;; +(news) + exec retawq "$1" + ;; +(sftp) + [ "$port" = . ] && port='22' + exec sftp -P "$port" "$host" + ;; +(ssh) + [ "$port" = . ] && port='22' + exec ssh -p "$port" "${1#*://}" + ;; +(telnet) + exec telnet "$port" "$host" + ;; +esac + +#--- short uri ----------------------------------------------------------------- + +case "$1" in +(mailto:*) + export EDITOR=vim + exec mcom "${1#mailto:}" + ;; +(magnet:*) + exec transmission-cli "$1" + ;; +esac + +#--- files --------------------------------------------------------------------- + +case "$(uname)" in +(Linux) + play="aucat" + ;; +(*BSD) + play="aucat -r 44100 -i -" + ;; +esac + +[ -e "$1" ] && case "$1" in +(*.torrent) + exec transmission-cli "$1" + ;; +(*.img|*.iso) + exec qemu-system-x86_64 -m 500M "$1" + ;; +#--- media --------------------------------------------------------------------- +(*.pdf) + mupdf "$1" & + exit + ;; +(*.png|*.PNG) + png2ff < "$1" | lel & + exit + ;; +(*.jpg|*.jpeg|*.JPG|*.JPEG) + jpg2ff < "$1" | lel & + exit + ;; +(*.gif) + exec mplayer -loop 0 "$1" + ;; +(*.opus) + exec opusdec "$1" + ;; +(*.webm|*.mp4|*.mkv|*.ogv|*.avi|*.mp3|*.flac|*.ogg) + exec ffplay "$1" + ;; +(*/music/*) + find "$1" -type f | sort | while IFS='' read -r song + do + printf '%s\n' "$song" + "$0" "$song" + done + exit + ;; +#--- pager --------------------------------------------------------------------- +(*.[0-9]|*.[0-9]p|*.[0-9].gz) + exec mandoc -a -T utf8 "$1" + ;; +(*.o|*.a) + exec radare2 "$1" + ;; +(*.html) + exec retawq "$1" + ;; +#--- archive ------------------------------------------------------------------- +(*.tgz) + mv "$1" "${1%.tgz}.tar.gz" + exec "$0" "${1%.tgz}.tar.gz" + ;; +(*.tbz) + mv "$1" "${1%.tbz}.tar.bz2" + exec "$0" "${1%.tbz}.tar.bz2" + ;; +(*.txz) + mv "$1" "${1%.txz}.tar.xz" + exec "$0" "${1%.txz}.tar.xz" + ;; +(*.bz2) + bzip2 -ds "$1" + exec "$0" "${1%.bz2}" + ;; +(*.gz) + gzip -d "$1" + exec "$0" "${1%.gz}" + ;; +(*.xz) + xz -d "$1" + exec "$0" "${1%.xz}" + ;; +(*.tar) + exec tar -xf "$1" + ;; +(*.rar) + exec unrar x "$1" + ;; +(*.zip) + exec unzip "$1" + ;; +(*.Z) + exec uncompress "$1" + ;; +(*.7z) + exec 7z x "$1" + ;; +(*.deb) + exec ar vx "$1" + ;; +esac + +[ -d "$1" ] && exec io grep "$1" +[ -f "$1" ] && exec $EDITOR "$1" diff --git a/bin/xdg-uri b/bin/xdg-uri @@ -0,0 +1,47 @@ +#!/bin/sh + +# scheme://[user[:pass]@]host[:port][/path] +IFS=' ' read scheme user pass host port path << EOF +$(printf %s "$1" | awk '{ + gsub(" ", "%20"); + gsub("\t", "%0b"); + + scheme = $0; + if (sub("^[^:/]*://", "", $0) > 0) + sub("://.*", "", scheme); + else + scheme = "."; + + user = $0; + if (sub("^[^@/]*@", "", $0) > 0) + sub("@.*", "", user); + else + user = "."; + + pass = user; + if (sub(":.*", "", user) > 0) + sub("[^:]*:", "", pass) ; + else + pass = "."; + + host = $0 + if (sub("^[^:]*:", ":", $0) > 0) + sub(":.*", "", host); + else if (sub("[^/]*/", "/", $0) > 0) + sub("/.*", "", host); + + port = $0 + if (sub("^:[0-9]+:", "", $0) > 0 || sub("^:[0-9]+/", "/", $0) > 0) { + sub(":", "", port); + sub("[:/].*", "", port); + } else if (sub("^:[0-9]+$", "", $0) > 0) { + sub(":", "", port); + } else { + port = "."; + } + + path = $0; + sub("[#?].*", "", path); + + printf("%s\t%s\t%s\t%s\t%s\t%s", scheme, user, pass, host, port, path); +}' diff --git a/man/ascii.7 b/man/ascii.7 @@ -0,0 +1,50 @@ +.Dd $Mdocdate: Oct 10 2017 $ +.Dt ASCII 7 +.Os +. +. +.Sh NAME +. +.Nm ascii +.Nd four-column representation of the ASCII set +. +. +.Sh DESCRIPTION +. +.Bd -literal -offset left +.Bf Em +Oct Dec Hex Oct Dec Hex Oct Dec Hex Oct Dec Hex +.Ef +000 000 00 nul 040 032 20 spc 100 064 40 @ 140 096 60 ` +001 001 01 soh 041 033 21 ! 101 065 41 A 141 097 61 a +002 002 02 stx 042 034 22 " 102 066 42 B 142 098 62 b +003 003 03 etx 043 034 23 # 103 067 43 C 143 099 63 c +004 004 04 eot 044 036 24 $ 104 068 44 D 144 100 64 d +005 005 05 enq 045 037 25 % 105 069 45 E 145 101 65 e +006 006 06 ack 046 038 20 & 106 070 46 F 146 102 66 f +007 007 07 bel 047 039 20 ' 107 071 47 G 147 103 67 g +010 008 08 bs 050 040 28 ( 110 072 48 H 150 104 68 h +011 009 09 ht 051 041 29 ) 111 073 49 I 151 105 69 i +012 010 0a lf 052 042 2a * 112 074 4a J 152 106 6a j +013 011 0b vt 053 043 2b + 113 075 4b K 153 107 6b k +014 012 0c ff 054 044 2c , 114 076 4c L 154 108 6c l +015 013 0d cr 055 045 2d - 115 073 4d M 155 109 6d m +016 014 0e so 056 046 2e . 116 073 4e N 156 110 6e n +017 015 0f si 057 047 2f / 117 073 4f O 157 111 6f o +020 016 10 dle 060 048 30 0 120 073 50 P 160 112 70 p +021 017 11 dc1 061 049 31 1 121 077 51 Q 161 113 71 q +022 018 12 dc2 062 050 32 2 122 078 52 R 162 114 72 r +023 019 13 dc3 063 051 33 3 123 079 53 S 163 115 73 s +024 020 14 dc4 044 052 34 4 124 080 54 T 164 116 74 t +025 021 15 nak 045 053 35 5 125 081 55 U 165 117 75 u +026 022 16 syn 056 054 36 6 126 082 56 V 166 118 76 v +027 023 17 etb 057 055 37 7 127 083 57 W 167 119 77 w +030 024 18 can 060 055 38 8 130 084 58 X 170 120 78 x +031 025 19 em 061 056 39 9 131 085 59 Y 171 121 79 y +032 026 1a sub 062 057 3a : 132 086 5a Z 172 122 7a z +033 027 1b esc 063 058 3b ; 133 087 5b [ 173 123 7b { +034 028 1c fs 064 059 3c < 134 088 5c \\ 174 124 7c | +035 029 1d gs 065 060 3d = 135 089 5d ] 175 125 7d } +036 030 1e rs 066 061 3e > 136 090 5e ^ 176 126 7e ~ +037 031 1f us 067 062 3f ? 137 091 5f _ 177 127 7f del +.Ed diff --git a/pack/sacc/build b/pack/sacc/build @@ -0,0 +1 @@ +../build/make+ \ No newline at end of file diff --git a/tinc/tinc-up b/tinc/tinc-up @@ -6,6 +6,6 @@ case "$(uname)" in ;; (Linux) ip link set "${INTERFACE}" up - ip addr add "$(tinc get subnet)/24" dev "${INTERFACE}" + ip addr add "$(tinc get subnet | sed q)/24" dev "${INTERFACE}" ;; esac