summaryrefslogtreecommitdiffstats
path: root/pym/portage_util.py
diff options
context:
space:
mode:
Diffstat (limited to 'pym/portage_util.py')
-rw-r--r--pym/portage_util.py51
1 files changed, 26 insertions, 25 deletions
diff --git a/pym/portage_util.py b/pym/portage_util.py
index 6a0c10155..9c521ab8a 100644
--- a/pym/portage_util.py
+++ b/pym/portage_util.py
@@ -13,16 +13,11 @@ def writemsg(mystr,noiselevel=0):
sys.stderr.write(mystr)
sys.stderr.flush()
-def grabfile(myfilename, compat_level=0):
+def grabfile(myfilename, compat_level=0, recursive=0):
"""This function grabs the lines in a file, normalizes whitespace and returns lines in a list; if a line
begins with a #, it is ignored, as are empty lines"""
- try:
- myfile=open(myfilename,"r")
- except IOError:
- return []
- mylines=myfile.readlines()
- myfile.close()
+ mylines=grablines(myfilename, recursive)
newlines=[]
for x in mylines:
#the split/join thing removes leading and trailing whitespace, and converts any whitespace in the line
@@ -130,15 +125,10 @@ def grab_multiple(basename, locations, handler, all_must_exist=0):
mylist.append(handler(x+"/"+basename))
return mylist
-def grabdict(myfilename,juststrings=0,empty=0):
+def grabdict(myfilename,juststrings=0,empty=0,recursive=0):
"""This function grabs the lines in a file, normalizes whitespace and returns lines in a dictionary"""
newdict={}
- try:
- myfile=open(myfilename,"r")
- except IOError,e:
- return newdict
- mylines=myfile.readlines()
- myfile.close()
+ mylines=grablines(myfilename,recursive)
for x in mylines:
#the split/join thing removes leading and trailing whitespace, and converts any whitespace in the line
#into single spaces.
@@ -155,16 +145,16 @@ def grabdict(myfilename,juststrings=0,empty=0):
newdict[myline[0]]=myline[1:]
return newdict
-def grabdict_package(myfilename,juststrings=0):
- pkgs=grabdict(myfilename, juststrings, empty=1)
+def grabdict_package(myfilename,juststrings=0,recursive=0):
+ pkgs=grabdict(myfilename, juststrings, empty=1, recursive=recursive)
for x in pkgs.keys():
if not isvalidatom(x):
del(pkgs[x])
writemsg("--- Invalid atom in %s: %s\n" % (myfilename, x))
return pkgs
-def grabfile_package(myfilename,compatlevel=0):
- pkgs=grabfile(myfilename,compatlevel)
+def grabfile_package(myfilename,compatlevel=0,recursive=0):
+ pkgs=grabfile(myfilename,compatlevel,recursive=recursive)
for x in range(len(pkgs)-1,-1,-1):
pkg = pkgs[x]
if pkg[0] == "-":
@@ -176,14 +166,9 @@ def grabfile_package(myfilename,compatlevel=0):
del(pkgs[x])
return pkgs
-def grabints(myfilename):
+def grabints(myfilename,recursive=0):
newdict={}
- try:
- myfile=open(myfilename,"r")
- except IOError:
- return newdict
- mylines=myfile.readlines()
- myfile.close()
+ mylines=grablines(myfilename,recursive)
for x in mylines:
#the split/join thing removes leading and trailing whitespace, and converts any whitespace in the line
#into single spaces.
@@ -193,6 +178,22 @@ def grabints(myfilename):
newdict[myline[0]]=string.atoi(myline[1])
return newdict
+def grablines(myfilename,recursive=0):
+ mylines=[]
+ if recursive and os.path.isdir(myfilename):
+ myfiles = [myfilename+os.path.sep+x for x in os.listdir(myfilename)]
+ myfiles.sort()
+ for f in myfiles:
+ mylines.extend(grablines(f, recursive))
+ else:
+ try:
+ myfile = open(myfilename, "r")
+ mylines = myfile.readlines()
+ myfile.close()
+ except IOError:
+ pass
+ return mylines
+
def writeints(mydict,myfilename):
try:
myfile=open(myfilename,"w")