#!/bin/sh
# abc2svg with jsc (webkit2gtk)
# search where are the abc2svg scripts
c=$0
if [ `dirname $c` = . ]; then
	c=`which $c`
fi
if [ -L $c ]; then
	c=`realpath $c`
fi
c=`dirname $c`

exec jsc -e "var progdir='${c}/'

// function to do utf-8 work...
// uncommenting this function asks for also uncommenting its call in cmdline.js
//function utf_convert(fin) {
//	var	b1, b2, b3,
//		fout = ''
//	for (var i = 0; i < fin.length; i++) {
//		b1 = fin.charCodeAt(i)
//		if (b1 >= 0x80) {
//			b2 = fin.charCodeAt(++i);
//			if (b1 >= 0xe0) {
//				b3 = fin.charCodeAt(++i);
//				if (b1 >= 0xf0) {		// >= 0x10000
//					b1 = ((b1 & 0x07) << 18) +
//						((b2 & 0x3f) << 12) +
//						((b3 & 0x3f) << 6) +
//						(fin.charCodeAt(++i) & 0x3f);
//					fout += String.fromCharCode((b1 >> 10) + 0xd7c0,
//								(b1 & 0x3ff) + 0xdc00)
//				} else {
//					fout += String.fromCharCode(((b1 & 0x0f) << 12) +
//								((b2 & 0x3f) << 6) +
//								(b3 & 0x3f))
//				}
//			} else {
//				fout += String.fromCharCode(((b1 & 0x1f) << 6) +
//							(b2 & 0x3f))
//			}
//		} else {
//			fout += String.fromCharCode(b1)
//		}
//	}
//	return fout
//}

// interpreter specific functions
var abc2svg = {
    print: function(str) {
	print(str)
    },
    printErr: function(str) {
	printErr(str)
    },
    quit: function() {
	quit(1)
    },
    readFile: function(fname) {
	try {
		return read(fname)
	} catch(e) {
	}
	return null
    },
    loadjs: function(fn, relay, onerror) {
	try {
		load(progdir + fn)
		if (relay)
			relay()
	} catch(e) {
		if (onerror)
			onerror()
		else
			printErr('Cannot read file ' + fn)
	}
    } // loadjs()
} // abc2svg

load(progdir + 'abc2svg-1.js')
load(progdir + 'cmdline.js')

function main(args) {
    var	i = '${ABCPATH}'

	console = {
		log: printErr
	}

	if (i)
		abc2svg.path = i.split(':')
	abc_cmd('abcjsc', args, 'jsc (webkit2gtk)')
}

if (typeof arguments == 'undefined')
	var arguments = ''

main(arguments)
" -- "$@"
