| 
									
										
										
										
											2013-05-15 13:17:33 +02:00
										 |  |  | ############################################################################# | 
					
						
							|  |  |  | ## | 
					
						
							| 
									
										
										
										
											2015-01-14 18:07:15 +01:00
										 |  |  | ## Copyright (C) 2015 The Qt Company Ltd. | 
					
						
							|  |  |  | ## Contact: http://www.qt.io/licensing | 
					
						
							| 
									
										
										
										
											2013-05-15 13:17:33 +02:00
										 |  |  | ## | 
					
						
							|  |  |  | ## This file is part of Qt Creator. | 
					
						
							|  |  |  | ## | 
					
						
							|  |  |  | ## Commercial License Usage | 
					
						
							|  |  |  | ## Licensees holding valid commercial Qt licenses may use this file in | 
					
						
							|  |  |  | ## accordance with the commercial license agreement provided with the | 
					
						
							|  |  |  | ## Software or, alternatively, in accordance with the terms contained in | 
					
						
							| 
									
										
										
										
											2015-01-14 18:07:15 +01:00
										 |  |  | ## a written agreement between you and The Qt Company.  For licensing terms and | 
					
						
							|  |  |  | ## conditions see http://www.qt.io/terms-conditions.  For further information | 
					
						
							| 
									
										
										
										
											2014-10-01 13:21:18 +02:00
										 |  |  | ## use the contact form at http://www.qt.io/contact-us. | 
					
						
							| 
									
										
										
										
											2013-05-15 13:17:33 +02:00
										 |  |  | ## | 
					
						
							|  |  |  | ## GNU Lesser General Public License Usage | 
					
						
							|  |  |  | ## Alternatively, this file may be used under the terms of the GNU Lesser | 
					
						
							| 
									
										
										
										
											2014-10-01 13:21:18 +02:00
										 |  |  | ## General Public License version 2.1 or version 3 as published by the Free | 
					
						
							|  |  |  | ## Software Foundation and appearing in the file LICENSE.LGPLv21 and | 
					
						
							|  |  |  | ## LICENSE.LGPLv3 included in the packaging of this file.  Please review the | 
					
						
							|  |  |  | ## following information to ensure the GNU Lesser General Public License | 
					
						
							|  |  |  | ## requirements will be met: https://www.gnu.org/licenses/lgpl.html and | 
					
						
							| 
									
										
										
										
											2015-02-13 16:51:38 +01:00
										 |  |  | ## http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. | 
					
						
							| 
									
										
										
										
											2013-05-15 13:17:33 +02:00
										 |  |  | ## | 
					
						
							| 
									
										
										
										
											2015-01-14 18:07:15 +01:00
										 |  |  | ## In addition, as a special exception, The Qt Company gives you certain additional | 
					
						
							|  |  |  | ## rights.  These rights are described in The Qt Company LGPL Exception | 
					
						
							| 
									
										
										
										
											2013-05-15 13:17:33 +02:00
										 |  |  | ## version 1.1, included in the file LGPL_EXCEPTION.txt in this package. | 
					
						
							|  |  |  | ## | 
					
						
							|  |  |  | ############################################################################# | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-10-19 17:36:14 +02:00
										 |  |  | import stat | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # this function modifies all (regular) files inside the given dirPath to have specified permissions | 
					
						
							|  |  |  | # ATTENTION: it won't process the directory recursively | 
					
						
							|  |  |  | def changeFilePermissions(dirPath, readPerm, writePerm, excludeFileNames=None): | 
					
						
							|  |  |  |     permission = 0 | 
					
						
							|  |  |  |     if readPerm: | 
					
						
							|  |  |  |         permission |= stat.S_IREAD | 
					
						
							|  |  |  |     if writePerm: | 
					
						
							|  |  |  |         permission |= stat.S_IWRITE | 
					
						
							|  |  |  |     if excludeFileNames == None: | 
					
						
							|  |  |  |         excludeFileNames = [] | 
					
						
							|  |  |  |     elif isinstance(excludeFileNames, (str, unicode)): | 
					
						
							|  |  |  |         excludeFileNames = [excludeFileNames] | 
					
						
							|  |  |  |     if not isinstance(excludeFileNames, (tuple, list)): | 
					
						
							|  |  |  |         test.warning("File names to exclude must be of type str, unicode, list, tuple or None - " | 
					
						
							|  |  |  |                      "ignoring parameter this time.") | 
					
						
							|  |  |  |         excludeFileNames = [] | 
					
						
							|  |  |  |     if not os.path.isdir(dirPath): | 
					
						
							|  |  |  |         test.warning("Could not find directory '%s'." % dirPath) | 
					
						
							|  |  |  |         return False | 
					
						
							|  |  |  |     filePaths = [os.path.join(dirPath, fileName) for fileName in os.listdir(dirPath) | 
					
						
							|  |  |  |                  if fileName not in excludeFileNames] | 
					
						
							| 
									
										
										
										
											2013-05-21 12:43:21 +02:00
										 |  |  |     result = True | 
					
						
							| 
									
										
										
										
											2012-10-19 17:36:14 +02:00
										 |  |  |     for filePath in filter(os.path.isfile, filePaths): | 
					
						
							| 
									
										
										
										
											2013-05-21 12:43:21 +02:00
										 |  |  |         try: | 
					
						
							|  |  |  |             os.chmod(filePath, permission) | 
					
						
							|  |  |  |         except: | 
					
						
							|  |  |  |             t,v = sys.exc_info()[:2] | 
					
						
							|  |  |  |             test.log("Error: %s(%s)" % (str(t), str(v))) | 
					
						
							|  |  |  |             result = False | 
					
						
							|  |  |  |     return result | 
					
						
							| 
									
										
										
										
											2012-10-19 17:36:14 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | def isWritable(pathToFile): | 
					
						
							|  |  |  |     if os.path.exists(pathToFile): | 
					
						
							|  |  |  |         return os.access(pathToFile, os.W_OK) | 
					
						
							|  |  |  |     else: | 
					
						
							|  |  |  |         test.warning("Path to check for writability does not exist.") | 
					
						
							|  |  |  |         return False |