use EXIT_FAILURE for exit status
[vis.git] / vis-clipboard
blob3a51b127e9ef61f85c73005ce5a9c1af753bbe4e
1 #!/bin/sh
3 # Copyright (C) 2016 Richard Burke, ISC licensed
5 vc_fatal() {
6 echo "$@" >&2
7 exit 1
10 vc_usage() {
11 vc_fatal "`basename $0` [--usable|--copy|--paste]"
14 vc_determine_command() {
15 if [ -n "$DISPLAY" ]; then
16 for c in xclip xsel; do
17 if type "$c" >/dev/null 2>&1; then
18 echo "$c"
19 return 0
21 done
22 elif type pbcopy >/dev/null 2>&1; then
23 echo 'mac'
24 return 0
25 elif [ -c /dev/clipboard ]; then
26 echo 'cygwin'
27 return 0
30 return 1
33 vc_usable() {
34 if vc_determine_command >/dev/null 2>&1; then
35 exit 0
38 exit 1
41 vc_copy() {
42 COPY_CMD="`vc_determine_command 2>/dev/null`"
44 if [ $? -ne 0 ] || [ -z "$COPY_CMD" ]; then
45 vc_fatal 'System clipboard not supported'
48 vc_${COPY_CMD}_copy
50 exit $?
53 vc_paste() {
54 PASTE_CMD="`vc_determine_command 2>/dev/null`"
56 if [ $? -ne 0 ] || [ -z "$PASTE_CMD" ]; then
57 vc_fatal 'System clipboard not supported'
60 vc_${PASTE_CMD}_paste
62 exit $?
65 vc_xsel_copy() {
66 xsel -bi
69 vc_xsel_paste() {
70 xsel -bo
73 vc_xclip_copy() {
74 xclip -selection clipboard -i >/dev/null 2>&1
77 vc_xclip_paste() {
78 xclip -selection clipboard -o
81 vc_mac_copy() {
82 pbcopy
85 vc_mac_paste() {
86 pbpaste
89 vc_cygwin_copy() {
90 cat >/dev/clipboard
93 vc_cygwin_paste() {
94 cat /dev/clipboard
97 case "$1" in
98 --usable) vc_usable;;
99 --copy) vc_copy;;
100 --paste) vc_paste;;
101 *) ;;
102 esac
104 vc_usage