xrsh-com/com/isoterminal/mnt/js

33 lines
887 B
Plaintext
Raw Normal View History

#!/bin/sh
2024-09-05 19:09:40 +02:00
PID=$$
2024-08-29 17:18:14 +02:00
test -z "$1" && { echo "Usage: js 'somefunction(1)'"; exit 0; }
2024-08-29 17:18:14 +02:00
test -n "$BROWSER" || { alert warning "/dev/browser not active (are you running outside of v86?)"; }
javascript="$*"
# if we are run as shebang, use the file as input
case "$1" in
2024-08-29 17:18:14 +02:00
*/*) javascript="args = String('$*').split(' '); $(cat $1 | tail +2)"
;;
esac
2024-09-05 19:09:40 +02:00
# below is not ideal
# first I tried /dev/ttyS* https://github.com/copy/v86/issues/530
# and differentiate processes by prefixing output by PID's
# to parse it later with AWK, but it was very hairy
OUTPUT=/mnt/$PID
echo -n "PID=$PID; $javascript" > /dev/browser/js
sleep 0.1
test -f $OUTPUT && {
cat $OUTPUT
rm $OUTPUT
}
2024-08-29 17:18:14 +02:00
# should we use flock, an awesome way to make processes read/write the same file
# while preventing 1001 concurrency issues?
# attempt:
#
# flock /dev/browser/js -c "echo \"$javascript\" > /dev/browser/js"