From 97d8fc879c3ef9acdfb80e328096f06ffdbac4a0 Mon Sep 17 00:00:00 2001
From: rswindell <>
Date: Fri, 10 Oct 2003 05:12:16 +0000
Subject: [PATCH] Added support for command-line parsing (e.g. -d to enable
 debug output). x/q commands stop the tone script immediately. Fixed frequency
 number parsing.

---
 exec/playtone.js | 33 ++++++++++++++++++++++++---------
 1 file changed, 24 insertions(+), 9 deletions(-)

diff --git a/exec/playtone.js b/exec/playtone.js
index 93d0723902..fece1311f6 100644
--- a/exec/playtone.js
+++ b/exec/playtone.js
@@ -10,6 +10,7 @@ var mode=0; 	/* Optional modes */
 var t=1;		/* Timing */
 var s=0;		/* Stacato */
 var octave=4;	/* Default octave */
+var stop=false;
 
 var pitch=523.50/32.0;	 /* low 'C' */
 
@@ -26,8 +27,8 @@ function play(freq, dur)
 	if(dur==undefined)
 		dur="0";
 
-	d=parseInt(dur);
-	if(isNaN(f=parseInt(freq.charAt(0))))
+	d=parseFloat(dur);
+	if(isNaN(f=parseInt(freq)))
 		switch(freq.charAt(0).toUpperCase()) {
 			case 'O':               /* default octave */
 				if(Number(dur.charAt(0)))
@@ -41,8 +42,6 @@ function play(freq, dur)
 				else
 					pitch+=parseFloat(dur);
 				return;
-			case 'Q':               /* quit */
-				exit(0);
 			case 'R':               /* rest */
 				f=0;
 				break;
@@ -64,8 +63,10 @@ function play(freq, dur)
 				else
 					writeln(dur);
 				return;
+			case 'Q':
 			case 'X':               /* exit */
-				exit(1);
+				stop=true;
+				break;;
 			default:
 				for(n=0;notes[n];n++)
 					if(freq.charAt(0)==notes[n] || freq.charAt(0)==sharp[n])
@@ -99,12 +100,24 @@ function play(freq, dur)
 
 printf("\r\nSynchronet Tone Generation Module %s\r\n\r\n", REVISION);
 
-if(argc<1) {
+var filename;
+var debug=false;
+
+for(i=0;i<argc;i++) {
+	switch(argv[i]) {
+		case "-d":
+			debug=true;
+			break;
+		default:
+			filename=argv[i];
+			break;
+	}
+}
+if(filename==undefined) {
 	alert("No filename specified");
 	exit();
 }
 
-var filename = argv[0];
 if(!file_exists(filename))
 	filename = system.exec_dir + filename;	
 file = new File(filename);
@@ -116,10 +129,12 @@ if(!file.open("r")) {
 text=file.readAll();
 file.close();
 
+stop=false;
 for(i in text) {
-	if(js.terminated)
+	if(js.terminated || stop)
 		break;
-//	writeln(text[i]);
+	if(debug)
+		writeln(text[i]);
 	if(text[i].charAt(0)==':')	/* comment */
 		continue;
 	token=truncsp(text[i]).split(/\s+/);
-- 
GitLab