> Would sbase suck less if the program head, which is currently a C > program of 77 lines, were replaced with something like > #!/bin/sh > sed "$1"q
Here it is in 37 lines of glorious rc shell code. Note that head.c also
depends on several functions in libutil, so it is more than 77 lines really.
#!/usr/bin/env rc
fn usage {printf '%s [-n num] [file ...]\n' $0; exit $1}
fn numeric {printf '%s' $1 | grep -Eq '^[0-9]+$'}
fn positive {expr $1 '>' 0 > /dev/null}
lines=10
while (! ~ $#* 0 && ~ $1 -* && ! ~ $1 --) {
switch($1) {
case -n
if (~ $2 ?*) {
if (numeric $2 && positive $2) {
lines=$2
shift
}; if not { # else
usage 1
}
}; if not {
usage 2
}
case -*; usage 3
}
shift
}
if (~ $1 --) {shift}
switch($#*) {
case 0
echo sed $lines^q
case 1
echo sed $lines^q $1
case *
while (! ~ $#* 0) {
printf '==> %s <==\n' $1
echo sed $lines^q $1
shift
}
}
true # otherwise script will exit with error
head.rc
Description: application/vnd.kde.kxmlguirc
