From 46e4b79b5133eeae1ba0190c0c3a8615f3e4cb73 Mon Sep 17 00:00:00 2001 From: div0 Date: Mon, 14 Dec 2009 15:56:13 +0000 Subject: [PATCH] moved ACL stuff to util.qc git-svn-id: svn://svn.icculus.org/nexuiz/trunk@8392 f962a42d-fe04-0410-a3ab-8c8b0445ebaa --- data/qcsrc/common/mapinfo.qc | 61 ------------------------------------ data/qcsrc/common/util.qc | 56 +++++++++++++++++++++++++++++++++ data/qcsrc/common/util.qh | 6 ++++ 3 files changed, 62 insertions(+), 61 deletions(-) diff --git a/data/qcsrc/common/mapinfo.qc b/data/qcsrc/common/mapinfo.qc index ec23207c6..a1609f6a3 100644 --- a/data/qcsrc/common/mapinfo.qc +++ b/data/qcsrc/common/mapinfo.qc @@ -1,65 +1,4 @@ // generic string stuff -float startsWith(string haystack, string needle) -{ - return substring(haystack, 0, strlen(needle)) == needle; -} -float startsWithNocase(string haystack, string needle) -{ - return strcasecmp(substring(haystack, 0, strlen(needle)), needle) == 0; -} -string extractRestOfLine(string haystack, string needle) -{ - if(startsWith(haystack, needle)) - return substring(haystack, strlen(needle), strlen(haystack) - strlen(needle)); - return string_null; -} -string car(string s) -{ - float o; - o = strstrofs(s, " ", 0); - if(o < 0) - return s; - return substring(s, 0, o); -} -string cdr(string s) -{ - float o; - o = strstrofs(s, " ", 0); - if(o < 0) - return string_null; - return substring(s, o + 1, strlen(s) - (o + 1)); -} -float matchacl(string acl, string str) -{ - string t, s; - float r, d; - r = 0; - while(acl) - { - t = car(acl); acl = cdr(acl); - d = 1; - if(substring(t, 0, 1) == "-") - { - d = -1; - t = substring(t, 1, strlen(t) - 1); - } - else if(substring(t, 0, 1) == "+") - t = substring(t, 1, strlen(t) - 1); - if(substring(t, -1, 1) == "*") - { - t = substring(t, 0, strlen(t) - 1); - s = substring(s, 0, strlen(t)); - } - else - s = str; - - if(s == t) - { - r = d; - } - } - return r; -} float _MapInfo_Cache_Active; float _MapInfo_Cache_DB_NameToIndex; diff --git a/data/qcsrc/common/util.qc b/data/qcsrc/common/util.qc index 8eb1ddb5f..49b321cd8 100644 --- a/data/qcsrc/common/util.qc +++ b/data/qcsrc/common/util.qc @@ -1733,3 +1733,59 @@ float gsl_ran_gaussian(float sigma) return sigma * sin(a) * b; } } + +string car(string s) +{ + float o; + o = strstrofs(s, " ", 0); + if(o < 0) + return s; + return substring(s, 0, o); +} +string cdr(string s) +{ + float o; + o = strstrofs(s, " ", 0); + if(o < 0) + return string_null; + return substring(s, o + 1, strlen(s) - (o + 1)); +} +float matchacl(string acl, string str) +{ + string t, s; + float r, d; + r = 0; + while(acl) + { + t = car(acl); acl = cdr(acl); + d = 1; + if(substring(t, 0, 1) == "-") + { + d = -1; + t = substring(t, 1, strlen(t) - 1); + } + else if(substring(t, 0, 1) == "+") + t = substring(t, 1, strlen(t) - 1); + if(substring(t, -1, 1) == "*") + { + t = substring(t, 0, strlen(t) - 1); + s = substring(s, 0, strlen(t)); + } + else + s = str; + + if(s == t) + { + r = d; + } + } + return r; +} +float startsWith(string haystack, string needle) +{ + return substring(haystack, 0, strlen(needle)) == needle; +} +float startsWithNocase(string haystack, string needle) +{ + return strcasecmp(substring(haystack, 0, strlen(needle)), needle) == 0; +} diff --git a/data/qcsrc/common/util.qh b/data/qcsrc/common/util.qh index 9240b1a0a..e5c620297 100644 --- a/data/qcsrc/common/util.qh +++ b/data/qcsrc/common/util.qh @@ -202,3 +202,9 @@ float float2range11(float f); float float2range01(float f); float gsl_ran_gaussian(float sigma); + +string car(string s); // returns first word +string cdr(string s); // returns all but first word +float matchacl(string acl, string str); // matches str against ACL acl (with entries +foo*, +foo, +*foo, +*foo*, and same with - for forbidding) +float startsWith(string haystack, string needle); +float startsWithNocase(string haystack, string needle); -- 2.39.2