| 
									
										
										
										
											1990-10-21 16:17:08 +00:00
										 |  |  | # Module 'stat' | 
					
						
							| 
									
										
										
										
											1992-03-31 19:03:19 +00:00
										 |  |  | # | 
					
						
							| 
									
										
										
										
											1990-10-21 16:17:08 +00:00
										 |  |  | # Defines constants and functions for interpreting stat/lstat struct | 
					
						
							| 
									
										
										
										
											1992-03-31 19:03:19 +00:00
										 |  |  | # as returned by os.stat() and os.lstat() (if it exists). | 
					
						
							|  |  |  | # | 
					
						
							| 
									
										
										
										
											1990-10-21 16:17:08 +00:00
										 |  |  | # Suggested usage: from stat import * | 
					
						
							| 
									
										
										
										
											1992-03-31 19:03:19 +00:00
										 |  |  | # | 
					
						
							|  |  |  | # XXX Strictly spoken, this module may have to be adapted for each POSIX | 
					
						
							|  |  |  | # implementation; in practice, however, the numeric constants used by | 
					
						
							|  |  |  | # stat() are almost universal (even for stat() emulations on non-UNIX | 
					
						
							| 
									
										
										
										
											1994-08-23 13:32:20 +00:00
										 |  |  | # systems like MS-DOS). | 
					
						
							| 
									
										
										
										
											1990-10-21 16:17:08 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1992-03-31 19:03:19 +00:00
										 |  |  | # Indices for stat struct members in tuple returned by os.stat() | 
					
						
							| 
									
										
										
										
											1990-10-21 16:17:08 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | ST_MODE  = 0 | 
					
						
							|  |  |  | ST_INO   = 1 | 
					
						
							|  |  |  | ST_DEV   = 2 | 
					
						
							|  |  |  | ST_NLINK = 3 | 
					
						
							|  |  |  | ST_UID   = 4 | 
					
						
							|  |  |  | ST_GID   = 5 | 
					
						
							|  |  |  | ST_SIZE  = 6 | 
					
						
							|  |  |  | ST_ATIME = 7 | 
					
						
							|  |  |  | ST_MTIME = 8 | 
					
						
							|  |  |  | ST_CTIME = 9 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1992-03-31 19:03:19 +00:00
										 |  |  | # Extract bits from the mode | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1990-10-31 11:25:23 +00:00
										 |  |  | def S_IMODE(mode): | 
					
						
							| 
									
										
										
										
											1992-03-31 19:03:19 +00:00
										 |  |  | 	return mode & 07777 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1990-10-21 16:17:08 +00:00
										 |  |  | def S_IFMT(mode): | 
					
						
							| 
									
										
										
										
											1992-05-06 11:38:27 +00:00
										 |  |  | 	return mode & 0170000 | 
					
						
							| 
									
										
										
										
											1992-03-31 19:03:19 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | # Constants used as S_IFMT() for various file types | 
					
						
							|  |  |  | # (not all are implemented on all systems) | 
					
						
							| 
									
										
										
										
											1990-10-21 16:17:08 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | S_IFDIR  = 0040000 | 
					
						
							|  |  |  | S_IFCHR  = 0020000 | 
					
						
							|  |  |  | S_IFBLK  = 0060000 | 
					
						
							|  |  |  | S_IFREG  = 0100000 | 
					
						
							|  |  |  | S_IFIFO  = 0010000 | 
					
						
							|  |  |  | S_IFLNK  = 0120000 | 
					
						
							|  |  |  | S_IFSOCK = 0140000 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1992-03-31 19:03:19 +00:00
										 |  |  | # Functions to test for each file type | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1990-10-21 16:17:08 +00:00
										 |  |  | def S_ISDIR(mode): | 
					
						
							| 
									
										
										
										
											1992-01-01 19:35:13 +00:00
										 |  |  | 	return S_IFMT(mode) == S_IFDIR | 
					
						
							| 
									
										
										
										
											1990-10-21 16:17:08 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | def S_ISCHR(mode): | 
					
						
							| 
									
										
										
										
											1992-01-01 19:35:13 +00:00
										 |  |  | 	return S_IFMT(mode) == S_IFCHR | 
					
						
							| 
									
										
										
										
											1990-10-21 16:17:08 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | def S_ISBLK(mode): | 
					
						
							| 
									
										
										
										
											1992-01-01 19:35:13 +00:00
										 |  |  | 	return S_IFMT(mode) == S_IFBLK | 
					
						
							| 
									
										
										
										
											1990-10-21 16:17:08 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | def S_ISREG(mode): | 
					
						
							| 
									
										
										
										
											1992-01-01 19:35:13 +00:00
										 |  |  | 	return S_IFMT(mode) == S_IFREG | 
					
						
							| 
									
										
										
										
											1990-10-21 16:17:08 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | def S_ISFIFO(mode): | 
					
						
							| 
									
										
										
										
											1992-01-01 19:35:13 +00:00
										 |  |  | 	return S_IFMT(mode) == S_IFIFO | 
					
						
							| 
									
										
										
										
											1990-10-21 16:17:08 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | def S_ISLNK(mode): | 
					
						
							| 
									
										
										
										
											1992-01-01 19:35:13 +00:00
										 |  |  | 	return S_IFMT(mode) == S_IFLNK | 
					
						
							| 
									
										
										
										
											1990-10-21 16:17:08 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | def S_ISSOCK(mode): | 
					
						
							| 
									
										
										
										
											1992-01-01 19:35:13 +00:00
										 |  |  | 	return S_IFMT(mode) == S_IFSOCK | 
					
						
							| 
									
										
										
										
											1992-05-06 11:38:27 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | # Names for permission bits | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | S_ISUID = 04000 | 
					
						
							|  |  |  | S_ISGID = 02000 | 
					
						
							|  |  |  | S_ENFMT = S_ISGID | 
					
						
							|  |  |  | S_ISVTX = 01000 | 
					
						
							|  |  |  | S_IREAD = 00400 | 
					
						
							|  |  |  | S_IWRITE = 00200 | 
					
						
							|  |  |  | S_IEXEC = 00100 | 
					
						
							|  |  |  | S_IRWXU = 00700 | 
					
						
							|  |  |  | S_IRUSR = 00400 | 
					
						
							|  |  |  | S_IWUSR = 00200 | 
					
						
							|  |  |  | S_IXUSR = 00100 | 
					
						
							|  |  |  | S_IRWXG = 00070 | 
					
						
							|  |  |  | S_IRGRP = 00040 | 
					
						
							|  |  |  | S_IWGRP = 00020 | 
					
						
							|  |  |  | S_IXGRP = 00010 | 
					
						
							|  |  |  | S_IRWXO = 00007 | 
					
						
							|  |  |  | S_IROTH = 00004 | 
					
						
							|  |  |  | S_IWOTH = 00002 | 
					
						
							|  |  |  | S_IXOTH = 00001 |