OpenSDE Framework (without history before r20070)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

95 lines
2.5 KiB

-- --- T2-COPYRIGHT-NOTE-BEGIN ---
-- This copyright note is auto-generated by ./scripts/Create-CopyPatch.
--
-- T2 SDE: misc/lua/parse-db.lua
-- Copyright (C) 2005 - 2006 The T2 SDE Project
--
-- More information can be found in the files COPYING and README.
--
-- This program is free software; you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
-- the Free Software Foundation; version 2 of the License. A copy of the
-- GNU General Public License can be found in the file COPYING.
-- --- T2-COPYRIGHT-NOTE-END ---
-- parse all packages.db information into tables
-- filelist saving commented out (eats another 30M)
require "lzlib"
require "t2_desc"
function block_lines()
local line = lines();
if (line == nil) or (line=="\023") then
return nil;
end
return line;
end
function read_deps()
local deps={}
for line in block_lines do
_,_,dependency = string.find(line, "[^ ]* (.*)");
table.insert (deps, dependency);
end
return deps;
end
function read_flist()
local files={};
local cksums={};
local sizes={};
local usage=0;
for line in block_lines do
_,_,cksum,size,file = string.find(line, "^([0-9]+) ([0-9]+) (.*)");
-- uncomment theese lines if you want to save complete file list
-- table.insert (files, file);
-- table.insert (cksums, 1 * cksum);
-- table.insert (sizes, 1 * size);
usage = usage + size;
end
return usage,files,cksums,sizes;
end
zf,error = lzlib.open("./packages.db", "r");
if not zf then -- failed to open file, print error
print(error);
else
lines = zf:lines(); -- obtain line iterator
packages = {};
repeat -- parse packages
pkgname = lines();
if pkgname then
print(pkgname);
local pkg_data = {};
if lines() ~= "\023" then -- separator line
print ("terminating line missing\n");
end
pkg_data.desc=t2_desc.parse (block_lines);
pkg_data.deps=read_deps ();
pkg_data.usage = read_flist ();
if lines() ~= "\004" then -- separator line
print ("terminating line missing\n");
end
packages[pkgname] = pkg_data;
end
until pkgname == nil;
_,normal_eof,error = zf:eof ();
if not normal_eof then -- check if stream ended because of error
print ("-- abnormal end of stream: ", error);
end
ok,error = zf:close();
if not ok then
print ("could not close stream: ", error);
end
x = gcinfo ();
print(x, "kb dynamic memory used.");
end