diff --git a/en b/en index 88ed0f7..dc0cff2 100755 --- a/en +++ b/en @@ -1,41 +1,37 @@ #!/bin/sh -e -# Copyright (c) 2023 Emma Tebibyte +# Copyright (c) 2023-2024 Emma Tebibyte # SPDX-License-Identifier: FSFAP # # Copying and distribution of this file, with or without modification, are # permitted in any medium without royalty provided the copyright notice and this # notice are preserved. This file is offered as-is, without any warranty. -argv0="$0" -exec >&2 &2 + printf "Usage: %s file...\n" "$0" 1>&2 exit 64 # sysexits.h(3) EX_USAGE fi if ! command -v mktemp >/dev/null 2>&1 then - printf "%s: mktemp(1): Missing dependency." "$argv0" + printf "%s: mktemp(1): missing dependency" "$0" exit 69 # sysexits.h(3) EX_UNAVAILABLE fi help="$(printf "Commands:\n\ -/ – display lines containing a string.\n\ -? – displays this help message.\n\ -a – appends a line to the current buffer.\n\ -c – clears the screen.\n\ -d – deletes a line.\n\ -e – evaluates a command in the shell environment.\n\ -i – inserts a line into the buffer at position line.\n\ -p – prints the current buffer.\n\ -q – terminates editing.\n\ -r – applies a regular expression to the current buffer.\n\ -w – writes the current buffer to the file.\n\ +/ – display lines containing a string\n\ +? – display this help message\n\ +a – append a line to the current buffer\n\ +c – clear the screen\n\ +d – delete a line\n\ +e – evaluate a command in the shell environment\n\ +i – insert a line into the buffer at position line\n\ +p – print the current buffer\n\ +q – terminate editing\n\ +r – applie a regular expression to the current buffer\n\ +x – exit the program without writing output\n\ \n\ -To learn more about a command verb, type \`? verb'.\n\ -en(1) Copyright (c) 2023 Emma Tebibyte\n")" +en(1) Copyright (c) 2023–2024 Emma Tebibyte\n")" while test -n "$1"; do content="$(cat "$1")" @@ -55,22 +51,22 @@ while test -n "$1"; do fi while true; do - printf ">> " + printf ">> " >/dev/tty read -r command args case $command in "/") if test -z "$args"; then - printf "%s: %s: Missing argument.\n" "$argv0" "$args" + printf "%s: %s: missing argument\n" "$0" "$args" else printf "%s" "$content" | nl | sed -n "/$args/p" fi ;; "?") if test -z "$args"; then - printf "%s: %s\n" "$argv0" "$help" + printf "%s: %s\n" "$0" "$help" else - printf "%s: Command-specific help not implemented.\n" "$argv0" 1>&2 + printf "%s: command-specific help not implemented\n" "$0" 1>&2 continue fi ;; @@ -87,7 +83,7 @@ while test -n "$1"; do ;; "d") if test -z "$args"; then - printf "%s: %s: Missing argument.\n" "$argv0" "$command" 1>&2 + printf "%s: %s: Missing argument.\n" "$0" "$command" 1>&2 else for line in $(printf "%s\n" "$args" | sed 's/,/\n/g') do @@ -100,39 +96,28 @@ while test -n "$1"; do eval "$args" || true ;; "i") - printf "%s: i: Command not implemented.\n" "$argv0" 1>&2 + printf "%s: i: Command not implemented.\n" "$0" 1>&2 ;; "p") out="$(syntax_h "$content" 2>/dev/null || printf "%s\n" "$content")" - printf "%s\n" "$out" | nl -ba + printf "%s\n" "$out" | nl -ba >/dev/tty ;; "q") - if test -n "$(printf "%s\n" "$content" | diff "$1" -)" - then - printf "%s: %s: Unsaved changes in the buffer. Quit anyway? [y/N] " \ - "$argv0" \ - "$1" - read -r quit - if [ "$quit" = "y" ]; then - break - else - continue - fi - else - break - fi + break ;; "r") content="$(printf "%s" "$content" | sed -e "$args")" ;; - "w") - printf "%s\n" "$content" > "$1" + "x") + exit ;; *) - printf "%s: %s: No such command.\n" "$argv0" "$command" + printf "%s: %s: unrecognized command\n" "$0" "$command" ;; esac done + printf '%s\n' "$content" + shift done