X-Git-Url: http://cvs.zerfleddert.de/cgi-bin/gitweb.cgi/proxmark3-svn/blobdiff_plain/a71ece51e49f739e0eff8022e6c5d66813d1aa56..683180cb6015109a5b4572fcb5d781955a4ff9ba:/client/reveng/poly.c?ds=inline

diff --git a/client/reveng/poly.c b/client/reveng/poly.c
index 1e22b8d2..0d41e502 100644
--- a/client/reveng/poly.c
+++ b/client/reveng/poly.c
@@ -1,5 +1,5 @@
 /* poly.c
- * Greg Cook, 9/Apr/2015
+ * Greg Cook, 29/Jul/2015
  */
 
 /* CRC RevEng, an arbitrary-precision CRC calculator and algorithm finder
@@ -21,7 +21,8 @@
  * along with CRC RevEng.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-/* 2015-04-03: added direct mode to strtop()
+/* 2015-07-29: discard leading $, &, 0x from argument to strtop()
+ * 2015-04-03: added direct mode to strtop()
  * 2014-01-11: added LOFS(), RNDUP()
  * 2013-09-16: SIZE(), IDX(), OFS() macros bitshift if BMP_POF2
  * 2013-02-07: conditional non-2^n fix, pmpar() return mask constant type
@@ -211,6 +212,15 @@ strtop(const char *string, int flags, int bperhx) {
 	if(bperhx > BMP_BIT || bperhx <= 0 || string == NULL || *string == '\0')
 		return(poly);
 
+	if(~flags & P_DIRECT) {
+		if(*string == '$' || *string == '&')
+			++string;
+		else if(*string == '0'
+			&& (string[1] == 'x' || string[1] == 'X'))
+			string += 2;
+	}
+	length = (*string != '\0');
+
 	for(pass=0; pass<2 && length > 0UL; ++pass) {
 		s = string;
 		length = 0UL;