Added initial unfs3 sources for version 0.9.22+dfsg-1maemo2
[unfs3] / unfs3 / Config / exports.l
diff --git a/unfs3/Config/exports.l b/unfs3/Config/exports.l
new file mode 100644 (file)
index 0000000..8a2d6d1
--- /dev/null
@@ -0,0 +1,70 @@
+%{
+/*
+ * UNFS3 exports lexer
+ * (C) 2003, Pascal Schmidt
+ * see file LICENSE for license details
+ */
+#include "../config.h"
+
+#include <rpc/rpc.h>
+#include <string.h>
+
+#include "../nfs.h"
+#include "y.tab.h"
+
+#define YY_NO_UNPUT
+
+YYSTYPE yylval;
+extern int e_error;
+
+/*
+ * copy matching text to yylval.text
+ */
+static void copy_text(const char *from, int leng)
+{
+       int len;
+
+       /* check length to prevent buffer overflow */   
+       if (leng + 1 > NFS_MAXPATHLEN) {
+               len = NFS_MAXPATHLEN - 1;
+               e_error = 1;
+       } else
+               len = leng;
+
+       memcpy(yylval.text, from, len);
+       yylval.text[len] = 0;
+}
+%}
+
+WHITE [ \t]
+NOWHITE [^ \n\t]
+PATH "/"{NOWHITE}*
+ID [a-z][\.\-_a-z0-9]*
+OPTVALUE [^ \n\t,)]*
+
+IPCOMP [0-9]{1,3}
+IP {IPCOMP}"."{IPCOMP}"."{IPCOMP}"."{IPCOMP}
+NETCOMP [0-9]{1,2}
+NET {IP}"/"{NETCOMP}
+OLDNET {IP}"/"{IP}
+
+%%
+
+^{WHITE}*\n            { /* eat empty line */ }
+^{WHITE}*              { /* eat whitespace at beginning of line */ }
+"\\"\n                 { /* eat escaped newline */ }
+^{WHITE}*"#".*\n       { /* eat one-line comment */ }
+{WHITE}*"#".*          { /* eat trailing comment */ }
+
+{IP}                   { copy_text(yytext, yyleng); return IP; }
+{NET}                  { copy_text(yytext, yyleng); return NET; }
+{OLDNET}               { copy_text(yytext, yyleng); return OLDNET; }
+"\"".*"\""             { copy_text(yytext+1, yyleng-2); return PATH; }
+"="{OPTVALUE}          { copy_text(yytext+1, yyleng-1); return OPTVALUE; }
+{PATH}                 { copy_text(yytext, yyleng); return PATH; }
+{WHITE}+               { copy_text(yytext, yyleng); return WHITE; }
+{ID}                   { copy_text(yytext, yyleng); return ID; }
+
+.                      { return *yytext; }
+\n                     { return '\n'; }
+   
\ No newline at end of file