Ubuntu packages of security software。 相当不错的源码

源代码在线查看: strbuf.lua

软件大小: 16163 K
上传用户: gggic
关键词: packages security software Ubuntu
下载地址: 免注册下载 普通下载 VIP

相关代码

				-- license = "See nmaps COPYING for license"				module("strbuf" ,package.seeall)								-- String buffer functions. Concatenation is not efficient in 				-- lua as strings are immutable. If a large amount of '..' 				-- operations are needed a string buffer should be used instead								--[[					local buf = strbuf.new()					-- from here buf may be used like a string for concatenation operations					-- (the lefthand-operand has to be a strbuf, the righthand-operand may be 					-- a string or a strbuf)					-- alternativly you can assign a value (which will become the first string					-- inside the buffer) with new					local buf2 = strbuf.new('hello')					buf = buf .. 'string'					buf = buf .. 'data'					print(buf)                   -- default seperator is a new line					print(strbuf.dump(buf))      -- no seperator					print(strbuf.dump(buf, ' ')) -- seperated by spaces					strbuf.clear(buf)				--]]																dump = table.concat 								concatbuf =function(sbuf, s)					if sbuf == s then						error("refusing to concat the same buffer (recursion)!")					end					if getmetatable(sbuf) ~= mt then						error("left-hand operand of the concat operation has to be a strbuf!")					end					if type(s)=="string" then						table.insert(sbuf, s)					elseif getmetatable(s) == mt then						for _,v in ipairs(s) do							table.insert(sbuf, v)						end					else 						error("right-hand operand of concat has to be either string or strbuf!")					end					return sbuf				end								local eqbuf = function(sbuf1, sbuf2)					if getmetatable(sbuf1) ~= mt then						error("equal function expects a value of type strbuf as left-hand operand")					end					if getmetatable(sbuf1) ~= getmetatable(sbuf2) then						return false					end									if #sbuf1 ~= #sbuf2 then						return false					end										for i=1, #sbuf1 do						if sbuf1[i] ~= sbuf2[i] then							return false						end					end					return true				end				clear = function(sbuf)					for i, v in pairs(sbuf) do						sbuf[i] = nil				    	end				end								mt = { __concat = concatbuf, __tostring = function(s) return dump(s, '\n') end ,  __eq=eqbuf}								new = function(val)					local tmp ={}					setmetatable(tmp, mt)					if val ~=nil then						table.insert(tmp, val)					end					return tmp				end																			

相关资源