$NetBSD: patch-dh,v 1.1 2007/09/07 21:26:34 spz Exp $

--- src/rpsl/rpsl/rpsl.l.orig	2006-10-01 13:23:32.000000000 +0200
+++ src/rpsl/rpsl/rpsl.l
@@ -74,7 +74,7 @@ INT            [[:digit:]]+
 SINT           [+-]?{INT}
 REAL           [+-]?{INT}?\.{INT}({WS}*E{WS}*[+-]?{INT})?
 NAME           [[:alpha:]]([[:alnum:]_-]*[[:alnum:]])?
-ASNO           AS{INT}
+ASNO           AS{INT}\.{INT}|AS{INT}
 ASNAME         AS-[[:alnum:]_-]*[[:alnum:]]
 RSNAME         RS-[[:alnum:]_-]*[[:alnum:]]
 RTRSNAME       RTRS-[[:alnum:]_-]*[[:alnum:]]
@@ -455,7 +455,11 @@ extern void atollRA(...);
 
   /* The order of these rules are important */
   {ASNO} {
-     yylval.i = atoi(yytext+2);
+     const char *dot = strchr(yytext,'.');
+	 if (dot)
+	   yylval.i = atoi(yytext+2)<<16 | atoi(dot+1);
+	 else
+	   yylval.i = atoi(yytext+2);
      LEXER_RETURN(TKN_ASNO);
   }
 
@@ -751,7 +755,7 @@ void yy_scan_object(Object *o) {
 
    if (rpsl_buffer)
       yy_delete_buffer(rpsl_buffer);
-   rpsl_buffer = yy_scan_bytes(o->contents, o->size);
+   rpsl_buffer = yy_scan_bytes(o->contents, (yy_size_t)o->size);
    BEGIN(INITIAL);
 }
 
