summaryrefslogtreecommitdiff
path: root/portato/eix
diff options
context:
space:
mode:
authorRené 'Necoro' Neumann <necoro@necoro.net>2009-08-15 13:31:42 +0200
committerRené 'Necoro' Neumann <necoro@necoro.net>2009-08-15 13:31:42 +0200
commiteb211ff9f62660143adfbfdc604c4f2bbd3b6784 (patch)
tree2d1ca106ab5a83da438a43a7aaacc2481b121575 /portato/eix
parent62c7271dc0fbb348be83304a2ffd823cb21c10d7 (diff)
downloadportato-eb211ff9f62660143adfbfdc604c4f2bbd3b6784.tar.gz
portato-eb211ff9f62660143adfbfdc604c4f2bbd3b6784.tar.bz2
portato-eb211ff9f62660143adfbfdc604c4f2bbd3b6784.zip
Some optimizations
Diffstat (limited to 'portato/eix')
-rw-r--r--portato/eix/parser.pyx20
1 files changed, 11 insertions, 9 deletions
diff --git a/portato/eix/parser.pyx b/portato/eix/parser.pyx
index 4c8f27d..be4b77e 100644
--- a/portato/eix/parser.pyx
+++ b/portato/eix/parser.pyx
@@ -24,6 +24,8 @@ cdef extern from "stdio.h":
pass
int fgetc(FILE* stream)
+ long ftell(FILE* stream)
+ int fseek(FILE* stream, long offset, int whence)
int EOF
int SEEK_CUR
@@ -48,7 +50,6 @@ cdef int _get_byte (FILE* file) except -1:
return c
-
#
# Base Types
#
@@ -135,8 +136,6 @@ def string (file):
:type file: file
:rtype: str
"""
- cdef LLong nelems
-
nelems = _number(file)
s = file.read(nelems)
@@ -225,8 +224,8 @@ cdef class header:
:param file: The file to read from
:type file: file
"""
- self.version = number(file)
- self.ncats = number(file)
+ self.version = _number(file)
+ self.ncats = _number(file)
self.overlays = vector(file, overlay)
self.provide = vector(file, string)
self.licenses = vector(file, string)
@@ -263,7 +262,7 @@ cdef class package:
The indices of `header.useflags` representing the IUSE value of the package.
"""
- cdef readonly object _offset
+ cdef LLong _offset
cdef readonly object name
cdef readonly object description
cdef readonly object provide
@@ -276,9 +275,12 @@ cdef class package:
:param file: The file to read from
:type file: file
"""
- self._offset = number(file)
+ cdef FILE* cfile = PyFile_AsFile(file)
+ cdef long after_offset
+
+ self._offset = _number(file)
- after_offset = file.tell()
+ after_offset = ftell(cfile)
self.name = string(file)
self.description = string(file)
@@ -289,7 +291,7 @@ cdef class package:
# self.versions = LE(typed_vector(version))
# for the moment just skip the versions
- file.seek(self._offset - (file.tell() - after_offset), SEEK_CUR)
+ fseek(cfile, self._offset - (ftell(cfile) - after_offset), SEEK_CUR)
cdef class category:
"""