From 66932700350acda4dd9851793d6298bdf56e2f8b Mon Sep 17 00:00:00 2001
From: deuce <>
Date: Fri, 15 Jan 2016 01:54:36 +0000
Subject: [PATCH] Add FIDO.parse_flo_file_path(default_zone, domain) method
 which returns a FIDO.Addr parsed from the flo file path... path should have
 the outbound directory name in it.

---
 exec/load/fido.js | 41 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 41 insertions(+)

diff --git a/exec/load/fido.js b/exec/load/fido.js
index 32c6b011e9..1882dc1a2a 100644
--- a/exec/load/fido.js
+++ b/exec/load/fido.js
@@ -140,6 +140,47 @@ var FIDO = {
 			domain = default_domain;
 		return new FIDO.Addr(m[2], m[3], zone, m[4], domain);
 	},
+	parse_flo_file_path:function(path, default_zone, domain)
+	{
+		var m;
+		var zone;
+		var point;
+		var ext;
+
+		if (default_zone === undefined)
+			throw("Defualt zone unspecified");
+		m = path.match(/(?:\.([0-9a-f]{3,4})[\/\\])?([0-9a-f]{4})([0-9a-f]{4})\.(...)(?:[\/\\]([0-9a-f]{8})\.(...))?$/i);
+		if (m === null)
+			throw("Invalid flo file path");
+		ext = m[4];
+		if (m[5] != null) {
+			if (m[4].toUpperCase() !== 'PNT')
+				throw("Invalid flo file path");
+			ext = m[6];
+		}
+		switch(ext.toLowerCase()) {
+			case 'ilo':
+			case 'clo':
+			case 'dlo':
+			case 'hlo':
+			case 'flo':
+			case 'iut':
+			case 'cut':
+			case 'dut':
+			case 'hut':
+			case 'out':
+				break;
+			default:
+				throw("Invalid flo file path");
+		}
+		zone = m[1];
+		if (zone == null)
+			zone = default_zone;
+		point = m[5];
+		if(point == null)
+			point = 0;
+		return new FIDO.Addr(parseInt(m[2], 16), parseInt(m[3], 16), parseInt(zone, 16), parseInt(point, 16), domain);
+	}
 };
 Object.defineProperties(FIDO.Addr.prototype, {
 	'str': {
-- 
GitLab