1 |
commit: b2d8535a2b905519d2b7d75c495135c7943edc99 |
2 |
Author: André Erdmann <dywi <AT> mailerd <DOT> de> |
3 |
AuthorDate: Fri Feb 21 18:28:08 2014 +0000 |
4 |
Commit: André Erdmann <dywi <AT> mailerd <DOT> de> |
5 |
CommitDate: Fri Feb 21 18:29:15 2014 +0000 |
6 |
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=b2d8535a |
7 |
|
8 |
roverlay/util/common: get_home_dir() |
9 |
|
10 |
--- |
11 |
roverlay/core.py | 3 ++- |
12 |
roverlay/util/common.py | 31 ++++++++++++++++++++++++++++++- |
13 |
2 files changed, 32 insertions(+), 2 deletions(-) |
14 |
|
15 |
diff --git a/roverlay/core.py b/roverlay/core.py |
16 |
index b8fe6a5..d462f0f 100644 |
17 |
--- a/roverlay/core.py |
18 |
+++ b/roverlay/core.py |
19 |
@@ -22,6 +22,7 @@ import logging |
20 |
import roverlay.config |
21 |
import roverlay.recipe.easylogger |
22 |
import roverlay.tools.shenv |
23 |
+import roverlay.util.common |
24 |
|
25 |
|
26 |
name = "R_overlay" |
27 |
@@ -45,7 +46,7 @@ DEFAULT_CONFIG_FILE_NAME = "R-overlay.conf" |
28 |
# |
29 |
CONFIG_DIRS = tuple (( |
30 |
( |
31 |
- ( os.getenv ( 'HOME' ) or os.path.expanduser ( '~' ) ) |
32 |
+ ( os.getenv ( 'HOME' ) or roverlay.util.common.get_home_dir ( None ) ) |
33 |
+ os.sep + 'roverlay' |
34 |
), |
35 |
# os.sep is '/' if /etc exists, so don't care about that |
36 |
|
37 |
diff --git a/roverlay/util/common.py b/roverlay/util/common.py |
38 |
index 30dd310..92c0183 100644 |
39 |
--- a/roverlay/util/common.py |
40 |
+++ b/roverlay/util/common.py |
41 |
@@ -11,7 +11,7 @@ __all__= [ |
42 |
'for_all_files_decorator', 'for_all_files', |
43 |
'get_dict_hash', 'keepenv', 'keepenv_v', |
44 |
'priosort', 'sysnop', 'getsize', 'is_vcs_dir', 'is_not_vcs_dir', |
45 |
- 'headtail', 'try_unlink', |
46 |
+ 'headtail', 'try_unlink', 'get_pwd_info', 'get_home_dir', |
47 |
] |
48 |
|
49 |
|
50 |
@@ -19,6 +19,7 @@ import errno |
51 |
import os |
52 |
import sys |
53 |
import logging |
54 |
+import pwd |
55 |
|
56 |
LOGGER = logging.getLogger ( 'util' ) |
57 |
|
58 |
@@ -322,3 +323,31 @@ def is_vcs_dir ( dirpath ): |
59 |
def is_not_vcs_dir ( dirpath ): |
60 |
return not is_vcs_dir ( dirpath ) |
61 |
# --- end of is_not_vcs_dir (...) --- |
62 |
+ |
63 |
+def get_pwd_info ( user=None ): |
64 |
+ """Returns the passwd entry of the given user. |
65 |
+ |
66 |
+ arguments: |
67 |
+ * user -- name, uid or None (os.getuid()). Defaults to None. |
68 |
+ """ |
69 |
+ if user is None: |
70 |
+ return pwd.getpwuid ( os.getuid() ) |
71 |
+ elif isinstance ( user, int ): |
72 |
+ return pwd.getpwuid ( user ) |
73 |
+ else: |
74 |
+ try: |
75 |
+ uid = int ( user, 10 ) |
76 |
+ except ValueError: |
77 |
+ return pwd.getpwnam ( user ) |
78 |
+ else: |
79 |
+ return pwd.getpwuid ( uid ) |
80 |
+# --- end of get_pwd_info (...) --- |
81 |
+ |
82 |
+def get_home_dir ( user=None ): |
83 |
+ """Returns a user's home directory. |
84 |
+ |
85 |
+ arguments: |
86 |
+ * user -- name, uid or None (os.getuid()). Defaults to None. |
87 |
+ """ |
88 |
+ return get_pwd_info ( user ).pw_dir |
89 |
+# --- end of get_home_dir (...) --- |