From 69cbb6f28631ce59b700152949272a788d18c380 Mon Sep 17 00:00:00 2001 From: fbt Date: Thu, 25 Sep 2014 19:11:43 +0400 Subject: [PATCH] Nah, that doesn't really work. Falling back to this method --- sx-open | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/sx-open b/sx-open index ba12725..92765f7 100755 --- a/sx-open +++ b/sx-open @@ -11,7 +11,7 @@ handle_uri() { local target="$1" for h in "${!uri_handlers[@]}"; do - grep -oE "${uri_handlers[${h}]}" <<< "$target" && { + grep -oE "${uri_handlers[${h}]}" &>/dev/null <<< "$target" && { ${h} "$target" & return 0 } @@ -20,15 +20,15 @@ handle_uri() { return 1 } -handle_file() { +handle_fs_target() { local target="$1" - [[ -f "$target" ]] || return 1 + [[ -e "$target" ]] || return 1 target_mimetype=$(file -ib "$target") for m in "${!mime_handlers[@]}"; do - grep -oE "${mime_handlers[${m}]}" <<< "$target_mimetype" && { + grep -oE "${mime_handlers[${m}]}" &>/dev/null <<< "$target_mimetype" && { ${m} "$target" & return 0 } @@ -38,9 +38,18 @@ handle_file() { } main() { - [[ "$1" ]] || { usage; exit; } + target="$1" + [[ "$target" ]] || { usage; exit; } - handle_file "$1" || handle_uri "$1" + if [[ -e "$target" ]]; then + handle_fs_target "$target" + else + handle_uri "$target" + fi + + [[ "$?" -gt 0 ]] && { + echo "No handlers found for $target" + } } main "$@"