... | ... |
@@ -477,4 +477,30 @@ def calculateChecksum(buffer, mfile, offset, chunk_size, send_chunk): |
477 | 477 |
|
478 | 478 |
__all__.append("calculateChecksum") |
479 | 479 |
|
480 |
+ |
|
481 |
+# Deal with the fact that pwd and grp modules don't exist for Windos |
|
482 |
+try: |
|
483 |
+ import pwd |
|
484 |
+ def getpwuid_username(uid): |
|
485 |
+ """returns a username from the password databse for the given uid""" |
|
486 |
+ return pwd.getpwuid(uid).pw_name |
|
487 |
+except ImportError: |
|
488 |
+ def getpwuid_username(uid): |
|
489 |
+ return getpass.getuser() |
|
490 |
+__all__.append("getpwuid_username") |
|
491 |
+ |
|
492 |
+try: |
|
493 |
+ import grp |
|
494 |
+ def getgrgid_grpname(gid): |
|
495 |
+ """returns a groupname from the group databse for the given gid""" |
|
496 |
+ return grp.getgrgid(gid).gr_name |
|
497 |
+except ImportError: |
|
498 |
+ def getgrgid_grpname(gid): |
|
499 |
+ return "nobody" |
|
500 |
+ |
|
501 |
+__all__.append("getgrgid_grpname") |
|
502 |
+ |
|
503 |
+ |
|
504 |
+ |
|
480 | 505 |
# vim:et:ts=4:sts=4:ai |
506 |
+ |
... | ... |
@@ -11,7 +11,7 @@ import os |
11 | 11 |
import re |
12 | 12 |
from subprocess import Popen, PIPE, STDOUT |
13 | 13 |
import locale |
14 |
-import pwd |
|
14 |
+import getpass |
|
15 | 15 |
|
16 | 16 |
count_pass = 0 |
17 | 17 |
count_fail = 0 |
... | ... |
@@ -206,11 +206,7 @@ def test_copy(label, src_file, dst_file): |
206 | 206 |
cmd.append(dst_file) |
207 | 207 |
return test(label, cmd) |
208 | 208 |
|
209 |
-try: |
|
210 |
- pwd = pwd.getpwuid(os.getuid()) |
|
211 |
- bucket_prefix = "%s.%s-" % (pwd.pw_name, pwd.pw_uid) |
|
212 |
-except: |
|
213 |
- bucket_prefix = '' |
|
209 |
+bucket_prefix = u"%s-" % getpass.getuser() |
|
214 | 210 |
print "Using bucket prefix: '%s'" % bucket_prefix |
215 | 211 |
|
216 | 212 |
argv = sys.argv[1:] |
... | ... |
@@ -1024,20 +1024,20 @@ def remote_copy(s3, copy_pairs, destination_base): |
1024 | 1024 |
failed_copy_list[dst2] = src_obj |
1025 | 1025 |
return (len(copy_pairs), saved_bytes, failed_copy_list) |
1026 | 1026 |
|
1027 |
+ |
|
1027 | 1028 |
def _build_attr_header(local_list, src): |
1028 |
- import pwd, grp |
|
1029 | 1029 |
attrs = {} |
1030 | 1030 |
for attr in cfg.preserve_attrs_list: |
1031 | 1031 |
if attr == 'uname': |
1032 | 1032 |
try: |
1033 |
- val = pwd.getpwuid(local_list[src]['uid']).pw_name |
|
1033 |
+ val = Utils.getpwuid_username(local_list[src]['uid']) |
|
1034 | 1034 |
except KeyError: |
1035 | 1035 |
attr = "uid" |
1036 | 1036 |
val = local_list[src].get('uid') |
1037 | 1037 |
warning(u"%s: Owner username not known. Storing UID=%d instead." % (src, val)) |
1038 | 1038 |
elif attr == 'gname': |
1039 | 1039 |
try: |
1040 |
- val = grp.getgrgid(local_list[src].get('gid')).gr_name |
|
1040 |
+ val = Utils.getgrgid_grpname(local_list[src].get('gid')) |
|
1041 | 1041 |
except KeyError: |
1042 | 1042 |
attr = "gid" |
1043 | 1043 |
val = local_list[src].get('gid') |