Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

  1. #  Utils (c) 2002, 2004, 2007, 2008  David Turner <david@freetype.org>
  2. #
  3.  
  4. import string, sys, os, glob
  5.  
  6. # current output directory
  7. #
  8. output_dir = None
  9.  
  10.  
  11. # This function is used to sort the index.  It is a simple lexicographical
  12. # sort, except that it places capital letters before lowercase ones.
  13. #
  14. def  index_sort( s1, s2 ):
  15.     if not s1:
  16.         return -1
  17.  
  18.     if not s2:
  19.         return 1
  20.  
  21.     l1 = len( s1 )
  22.     l2 = len( s2 )
  23.     m1 = string.lower( s1 )
  24.     m2 = string.lower( s2 )
  25.  
  26.     for i in range( l1 ):
  27.         if i >= l2 or m1[i] > m2[i]:
  28.             return 1
  29.  
  30.         if m1[i] < m2[i]:
  31.             return -1
  32.  
  33.         if s1[i] < s2[i]:
  34.             return -1
  35.  
  36.         if s1[i] > s2[i]:
  37.             return 1
  38.  
  39.     if l2 > l1:
  40.         return -1
  41.  
  42.     return 0
  43.  
  44.  
  45. # Sort input_list, placing the elements of order_list in front.
  46. #
  47. def  sort_order_list( input_list, order_list ):
  48.     new_list = order_list[:]
  49.     for id in input_list:
  50.         if not id in order_list:
  51.             new_list.append( id )
  52.     return new_list
  53.  
  54.  
  55. # Open the standard output to a given project documentation file.  Use
  56. # "output_dir" to determine the filename location if necessary and save the
  57. # old stdout in a tuple that is returned by this function.
  58. #
  59. def  open_output( filename ):
  60.     global output_dir
  61.  
  62.     if output_dir and output_dir != "":
  63.         filename = output_dir + os.sep + filename
  64.  
  65.     old_stdout = sys.stdout
  66.     new_file   = open( filename, "w" )
  67.     sys.stdout = new_file
  68.  
  69.     return ( new_file, old_stdout )
  70.  
  71.  
  72. # Close the output that was returned by "close_output".
  73. #
  74. def  close_output( output ):
  75.     output[0].close()
  76.     sys.stdout = output[1]
  77.  
  78.  
  79. # Check output directory.
  80. #
  81. def  check_output():
  82.     global output_dir
  83.     if output_dir:
  84.         if output_dir != "":
  85.             if not os.path.isdir( output_dir ):
  86.                 sys.stderr.write( "argument" + " '" + output_dir + "' " + \
  87.                                   "is not a valid directory" )
  88.                 sys.exit( 2 )
  89.         else:
  90.             output_dir = None
  91.  
  92.  
  93. def  file_exists( pathname ):
  94.     """checks that a given file exists"""
  95.     result = 1
  96.     try:
  97.         file = open( pathname, "r" )
  98.         file.close()
  99.     except:
  100.         result = None
  101.         sys.stderr.write( pathname + " couldn't be accessed\n" )
  102.  
  103.     return result
  104.  
  105.  
  106. def  make_file_list( args = None ):
  107.     """builds a list of input files from command-line arguments"""
  108.     file_list = []
  109.     # sys.stderr.write( repr( sys.argv[1 :] ) + '\n' )
  110.  
  111.     if not args:
  112.         args = sys.argv[1 :]
  113.  
  114.     for pathname in args:
  115.         if string.find( pathname, '*' ) >= 0:
  116.             newpath = glob.glob( pathname )
  117.             newpath.sort()  # sort files -- this is important because
  118.                             # of the order of files
  119.         else:
  120.             newpath = [pathname]
  121.  
  122.         file_list.extend( newpath )
  123.  
  124.     if len( file_list ) == 0:
  125.         file_list = None
  126.     else:
  127.         # now filter the file list to remove non-existing ones
  128.         file_list = filter( file_exists, file_list )
  129.  
  130.     return file_list
  131.  
  132. # eof
  133.