From: <zy...@us...> - 2008-10-11 03:37:49
|
Revision: 5370 http://jython.svn.sourceforge.net/jython/?rev=5370&view=rev Author: zyasoft Date: 2008-10-11 03:37:39 +0000 (Sat, 11 Oct 2008) Log Message: ----------- Patch from #1075, thanks Matt Boersma! Modified Paths: -------------- trunk/jython/Lib/os.py Modified: trunk/jython/Lib/os.py =================================================================== --- trunk/jython/Lib/os.py 2008-10-11 02:38:55 UTC (rev 5369) +++ trunk/jython/Lib/os.py 2008-10-11 03:37:39 UTC (rev 5370) @@ -205,15 +205,15 @@ if i < 0 or i > 9: raise IndexError(i) return getattr(self, stat_result._stat_members[i][0]) - + def __setitem__(self, x, value): raise TypeError("object doesn't support item assignment") - + def __setattr__(self, name, value): if name in [x[0] for x in stat_result._stat_members]: raise TypeError(name) raise AttributeError("readonly attribute") - + def __len__(self): return 10 @@ -303,14 +303,14 @@ # if making a /x/y/z/., java.io.File#mkdirs inexplicably fails. So we need # to force it - + # need to use _path instead of path, because param is hiding # os.path module in namespace! head, tail = _path.split(sys_path) if tail == curdir: if File(_path.join(head)).mkdirs(): return - + raise OSError(0, "couldn't make directories", path) def remove(path): @@ -362,7 +362,12 @@ """rmdir(path) Remove a directory.""" - if not File(sys.getPath(path)).delete(): + f = File(sys.getPath(path)) + if not f.exists(): + raise OSError(errno.ENOENT, errno.strerror(errno.ENOENT), path) + elif not f.isDirectory(): + raise OSError(errno.ENOTDIR, errno.strerror(errno.ENOTDIR), path) + elif not f.delete(): raise OSError(0, "couldn't delete directory", path) #XXX: copied from CPython 2.5.1 @@ -392,7 +397,7 @@ def strerror(code): """strerror(code) -> string - + Translate an error code to a message string. """ if not isinstance(code, (int, long)): @@ -404,7 +409,7 @@ def access(path, mode): """access(path, mode) -> True if granted, False otherwise - + Use the real uid/gid to test for access to a path. Note that most operations will use the effective uid/gid, therefore this routine can be used in a suid/sgid environment to test if the invoking user has the @@ -458,7 +463,7 @@ def lstat(path): """lstat(path) -> stat result - + Like stat(path), but do not follow symbolic links. """ abs_path = sys.getPath(path) @@ -545,7 +550,7 @@ """ftruncate(fd, length) Truncate a file to a specified length. - """ + """ rawio = FileDescriptors.get(fd) try: rawio.truncate(length) @@ -647,7 +652,7 @@ if _name == 'posix' and _native_posix: def link(src, dst): """link(src, dst) - + Create a hard link to a file. """ _posix.link(sys.getPath(src), sys.getPath(dst)) @@ -661,7 +666,7 @@ def readlink(path): """readlink(path) -> path - + Return a string representing the path to which the symbolic link points. """ @@ -863,7 +868,7 @@ def putenv(key, value): """putenv(key, value) - + Change or add an environment variable. """ environ[key] = value This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pj...@us...> - 2008-10-16 06:38:54
|
Revision: 5420 http://jython.svn.sourceforge.net/jython/?rev=5420&view=rev Author: pjenvey Date: 2008-10-16 06:38:43 +0000 (Thu, 16 Oct 2008) Log Message: ----------- fix os.access not handling multiple modes, and make its X_OK work via jna-posix's stat Modified Paths: -------------- trunk/jython/Lib/os.py Modified: trunk/jython/Lib/os.py =================================================================== --- trunk/jython/Lib/os.py 2008-10-16 03:28:52 UTC (rev 5419) +++ trunk/jython/Lib/os.py 2008-10-16 06:38:43 UTC (rev 5420) @@ -421,15 +421,17 @@ raise TypeError('an integer is required') f = File(sys.getPath(path)) + result = True if not f.exists(): - return False + result = False if mode & R_OK and not f.canRead(): - return False + result = False if mode & W_OK and not f.canWrite(): - return False - if mode & X_OK: - return False - return True + result = False + if mode & X_OK and not (stat(path).st_mode & _stat.S_IEXEC): + # NOTE: always False without jna-posix stat + result = False + return result def stat(path): """stat(path) -> stat result This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pj...@us...> - 2008-10-18 20:23:04
|
Revision: 5462 http://jython.svn.sourceforge.net/jython/?rev=5462&view=rev Author: pjenvey Date: 2008-10-18 20:23:01 +0000 (Sat, 18 Oct 2008) Log Message: ----------- fix os.access to never raise an exception with a valid mode, which I broke in r5420 Modified Paths: -------------- trunk/jython/Lib/os.py Modified: trunk/jython/Lib/os.py =================================================================== --- trunk/jython/Lib/os.py 2008-10-18 19:03:40 UTC (rev 5461) +++ trunk/jython/Lib/os.py 2008-10-18 20:23:01 UTC (rev 5462) @@ -428,9 +428,12 @@ result = False if mode & W_OK and not f.canWrite(): result = False - if mode & X_OK and not (stat(path).st_mode & _stat.S_IEXEC): + if mode & X_OK: # NOTE: always False without jna-posix stat - result = False + try: + result = (stat(path).st_mode & _stat.S_IEXEC) != 0 + except OSError: + result = False return result def stat(path): This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pj...@us...> - 2008-10-21 21:59:47
|
Revision: 5501 http://jython.svn.sourceforge.net/jython/?rev=5501&view=rev Author: pjenvey Date: 2008-10-21 21:59:40 +0000 (Tue, 21 Oct 2008) Log Message: ----------- fake support for an EEXIST OSError from mkdir. not 100% correct but this allows pylint to install Modified Paths: -------------- trunk/jython/Lib/os.py Modified: trunk/jython/Lib/os.py =================================================================== --- trunk/jython/Lib/os.py 2008-10-21 21:25:21 UTC (rev 5500) +++ trunk/jython/Lib/os.py 2008-10-21 21:59:40 UTC (rev 5501) @@ -286,8 +286,15 @@ The optional parameter is currently ignored. """ - if not File(sys.getPath(path)).mkdir(): - raise OSError(0, "couldn't make directory", path) + # XXX: use _posix.mkdir when we can get the real errno upon failure + fp = File(sys.getPath(path)) + if not fp.mkdir(): + if fp.isDirectory() or fp.isFile(): + err = errno.EEXIST + else: + err = 0 + msg = errno.strerror(err) if err else "couldn't make directory" + raise OSError(err, msg, path) def makedirs(path, mode='ignored'): """makedirs(path [, mode=0777]) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pj...@us...> - 2008-12-10 07:35:01
|
Revision: 5730 http://jython.svn.sourceforge.net/jython/?rev=5730&view=rev Author: pjenvey Date: 2008-12-10 07:34:57 +0000 (Wed, 10 Dec 2008) Log Message: ----------- hide posixy stuff when not on posix Modified Paths: -------------- trunk/jython/Lib/os.py Modified: trunk/jython/Lib/os.py =================================================================== --- trunk/jython/Lib/os.py 2008-12-10 07:09:49 UTC (rev 5729) +++ trunk/jython/Lib/os.py 2008-12-10 07:34:57 UTC (rev 5730) @@ -494,6 +494,9 @@ except: raise f = File(sys.getPath(path)) + # XXX: jna-posix implements similar link detection in + # JavaFileStat.calculateSymlink, fallback to that instead when not + # native abs_parent = f.getAbsoluteFile().getParentFile() if not abs_parent: # root isn't a link @@ -669,29 +672,6 @@ except: raise OSError(errno.EBADF, strerror(errno.EBADF)) -if _name == 'posix' and _native_posix: - def link(src, dst): - """link(src, dst) - - Create a hard link to a file. - """ - _posix.link(sys.getPath(src), sys.getPath(dst)) - - def symlink(src, dst): - """symlink(src, dst) - - Create a symbolic link pointing to src named dst. - """ - _posix.symlink(src, sys.getPath(dst)) - - def readlink(path): - """readlink(path) -> path - - Return a string representing the path to which the symbolic link - points. - """ - return _posix.readlink(sys.getPath(path)) - # Provide lazy popen*, and system objects # Do these lazily, as most jython programs don't need them, # and they are very expensive to initialize @@ -906,66 +886,89 @@ The optional second argument can specify an alternate default.""" return environ.get(key, default) -def getegid(): - """getegid() -> egid +if _name == 'posix': + def link(src, dst): + """link(src, dst) - Return the current process's effective group id.""" - return _posix.getegid() + Create a hard link to a file. + """ + _posix.link(sys.getPath(src), sys.getPath(dst)) -def geteuid(): - """geteuid() -> euid + def symlink(src, dst): + """symlink(src, dst) - Return the current process's effective user id.""" - return _posix.geteuid() + Create a symbolic link pointing to src named dst. + """ + _posix.symlink(src, sys.getPath(dst)) -def getgid(): - """getgid() -> gid + def readlink(path): + """readlink(path) -> path - Return the current process's group id.""" - return _posix.getgid() + Return a string representing the path to which the symbolic link + points. + """ + return _posix.readlink(sys.getPath(path)) -def getlogin(): - """getlogin() -> string + def getegid(): + """getegid() -> egid - Return the actual login name.""" - return _posix.getlogin() + Return the current process's effective group id.""" + return _posix.getegid() -def getpgrp(): - """getpgrp() -> pgrp + def geteuid(): + """geteuid() -> euid - Return the current process group id.""" - return _posix.getpgrp() + Return the current process's effective user id.""" + return _posix.geteuid() -def getpid(): - """getpid() -> pid + def getgid(): + """getgid() -> gid - Return the current process id.""" - return _posix.getpid() + Return the current process's group id.""" + return _posix.getgid() -def getppid(): - """getppid() -> ppid + def getlogin(): + """getlogin() -> string - Return the parent's process id.""" - return _posix.getppid() + Return the actual login name.""" + return _posix.getlogin() -def getuid(): - """getuid() -> uid + def getpgrp(): + """getpgrp() -> pgrp - Return the current process's user id.""" - return _posix.getuid() + Return the current process group id.""" + return _posix.getpgrp() -def setpgrp(): - """setpgrp() + def getppid(): + """getppid() -> ppid - Make this process a session leader.""" - return _posix.setpgrp() + Return the parent's process id.""" + return _posix.getppid() -def setsid(): - """setsid() + def getuid(): + """getuid() -> uid - Call the system call setsid().""" - return _posix.setsid() + Return the current process's user id.""" + return _posix.getuid() + def setpgrp(): + """setpgrp() + + Make this process a session leader.""" + return _posix.setpgrp() + + def setsid(): + """setsid() + + Call the system call setsid().""" + return _posix.setsid() + +def getpid(): + """getpid() -> pid + + Return the current process id.""" + return _posix.getpid() + def isatty(fileno): """isatty(fd) -> bool This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pj...@us...> - 2008-12-14 23:57:41
|
Revision: 5761 http://jython.svn.sourceforge.net/jython/?rev=5761&view=rev Author: pjenvey Date: 2008-12-14 23:57:35 +0000 (Sun, 14 Dec 2008) Log Message: ----------- coerce the POSIXHandler's error message back to a str Modified Paths: -------------- trunk/jython/Lib/os.py Modified: trunk/jython/Lib/os.py =================================================================== --- trunk/jython/Lib/os.py 2008-12-14 18:29:43 UTC (rev 5760) +++ trunk/jython/Lib/os.py 2008-12-14 23:57:35 UTC (rev 5761) @@ -101,8 +101,8 @@ def error(self, error, msg): err = getattr(errno, error.name(), None) if err is None: - raise OSError('%s: %s' % (error, msg)) - raise OSError(err, strerror(err), msg) + raise OSError('%s: %s' % (error, asPyString(msg))) + raise OSError(err, strerror(err), asPyString(msg)) def unimplementedError(self, method_name): raise NotImplementedError(method_name) def warn(self, warning_id, msg, rest): This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pj...@us...> - 2009-01-01 00:35:31
|
Revision: 5826 http://jython.svn.sourceforge.net/jython/?rev=5826&view=rev Author: pjenvey Date: 2009-01-01 00:35:27 +0000 (Thu, 01 Jan 2009) Log Message: ----------- add umask Modified Paths: -------------- trunk/jython/Lib/os.py Modified: trunk/jython/Lib/os.py =================================================================== --- trunk/jython/Lib/os.py 2009-01-01 00:20:37 UTC (rev 5825) +++ trunk/jython/Lib/os.py 2009-01-01 00:35:27 UTC (rev 5826) @@ -1068,7 +1068,13 @@ return fileno.isatty() +def umask(new_mask): + """umask(new_mask) -> old_mask + Set the current numeric umask and return the previous umask.""" + return _posix.umask(int(new_mask)) + + from java.security import SecureRandom urandom_source = None This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pj...@us...> - 2009-01-10 00:49:08
|
Revision: 5906 http://jython.svn.sourceforge.net/jython/?rev=5906&view=rev Author: pjenvey Date: 2009-01-10 00:49:02 +0000 (Sat, 10 Jan 2009) Log Message: ----------- fix broken import Modified Paths: -------------- trunk/jython/Lib/os.py Modified: trunk/jython/Lib/os.py =================================================================== --- trunk/jython/Lib/os.py 2009-01-09 20:53:52 UTC (rev 5905) +++ trunk/jython/Lib/os.py 2009-01-10 00:49:02 UTC (rev 5906) @@ -569,7 +569,7 @@ if _time_t is None: from java.lang import Integer, Long try: - from org.python.posix import Platform + from org.python.posix.util import Platform except ImportError: from org.jruby.ext.posix.util import Platform _time_t = Integer if Platform.IS_32_BIT else Long This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <zy...@us...> - 2009-01-20 18:28:06
|
Revision: 5950 http://jython.svn.sourceforge.net/jython/?rev=5950&view=rev Author: zyasoft Date: 2009-01-20 18:28:03 +0000 (Tue, 20 Jan 2009) Log Message: ----------- Added os.getcwdu. This fixes #1219 (necessary for Django 1.0.2 support), but not the larger question of better Unicode handling in the os module, specifically around os.path. Modified Paths: -------------- trunk/jython/Lib/os.py Modified: trunk/jython/Lib/os.py =================================================================== --- trunk/jython/Lib/os.py 2009-01-20 13:56:46 UTC (rev 5949) +++ trunk/jython/Lib/os.py 2009-01-20 18:28:03 UTC (rev 5950) @@ -251,6 +251,13 @@ """ return asPyString(sys.getCurrentWorkingDir()) +def getcwdu(): + """getcwd() -> path + + Return a unicode string representing the current working directory. + """ + return sys.getCurrentWorkingDir() + def chdir(path): """chdir(path) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <le...@us...> - 2009-01-20 19:29:20
|
Revision: 5951 http://jython.svn.sourceforge.net/jython/?rev=5951&view=rev Author: leosoto Date: 2009-01-20 19:29:17 +0000 (Tue, 20 Jan 2009) Log Message: ----------- Use the new getcwdu on POSIXHandler, to avoid unnecesary conversions from unicode to bytestring. Also added getcwdu to os.__all__ Modified Paths: -------------- trunk/jython/Lib/os.py Modified: trunk/jython/Lib/os.py =================================================================== --- trunk/jython/Lib/os.py 2009-01-20 18:28:03 UTC (rev 5950) +++ trunk/jython/Lib/os.py 2009-01-20 19:29:17 UTC (rev 5951) @@ -30,8 +30,8 @@ 'O_RDWR', 'O_SYNC', 'O_TRUNC', 'O_WRONLY', 'R_OK', 'SEEK_CUR', 'SEEK_END', 'SEEK_SET', 'W_OK', 'X_OK', '_exit', 'access', 'altsep', 'chdir', 'chmod', 'close', 'curdir', 'defpath', - 'environ', 'error', 'fdopen', 'getcwd', 'getegid', 'getenv', - 'geteuid', 'getgid', 'getlogin', 'getlogin', 'getpgrp', + 'environ', 'error', 'fdopen', 'getcwd', 'getcwdu', 'getegid', + 'getenv','geteuid', 'getgid', 'getlogin', 'getlogin', 'getpgrp', 'getpid', 'getppid', 'getuid', 'isatty', 'linesep', 'listdir', 'lseek', 'lstat', 'makedirs', 'mkdir', 'name', 'open', 'pardir', 'path', 'pathsep', 'popen', 'popen2', 'popen3', 'popen4', @@ -118,7 +118,7 @@ def isVerbose(self): return False def getCurrentWorkingDirectory(self): - return File(getcwd()) + return File(getcwdu()) def getEnv(self): return ['%s=%s' % (key, val) for key, val in environ.iteritems()] def getInputStream(self): This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pj...@us...> - 2009-04-03 01:01:39
|
Revision: 6150 http://jython.svn.sourceforge.net/jython/?rev=6150&view=rev Author: pjenvey Date: 2009-04-03 01:01:25 +0000 (Fri, 03 Apr 2009) Log Message: ----------- give stats a repr Modified Paths: -------------- trunk/jython/Lib/os.py Modified: trunk/jython/Lib/os.py =================================================================== --- trunk/jython/Lib/os.py 2009-04-03 00:52:31 UTC (rev 6149) +++ trunk/jython/Lib/os.py 2009-04-03 01:01:25 UTC (rev 6150) @@ -198,7 +198,7 @@ def __init__(self, results): if len(results) != 10: - raise TypeError("stat_result() takes an a 10-sequence") + raise TypeError("stat_result() takes an a 10-sequence") for (name, index) in stat_result._stat_members: self.__dict__[name] = results[index] @@ -234,6 +234,10 @@ return 1 return cmp(self.__dict__, other.__dict__) + def __repr__(self): + return repr(tuple(self.__dict__[member[0]] for member + in stat_result._stat_members)) + error = OSError def _exit(n=0): This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pj...@us...> - 2009-04-11 20:49:25
|
Revision: 6219 http://jython.svn.sourceforge.net/jython/?rev=6219&view=rev Author: pjenvey Date: 2009-04-11 20:49:13 +0000 (Sat, 11 Apr 2009) Log Message: ----------- cleanup Modified Paths: -------------- trunk/jython/Lib/os.py Modified: trunk/jython/Lib/os.py =================================================================== --- trunk/jython/Lib/os.py 2009-04-11 18:26:24 UTC (rev 6218) +++ trunk/jython/Lib/os.py 2009-04-11 20:49:13 UTC (rev 6219) @@ -1080,7 +1080,6 @@ return _posix.isatty(fileno) if not isinstance(fileno, IOBase): - print fileno raise TypeError('a file descriptor is required') return fileno.isatty() This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pj...@us...> - 2009-04-23 05:47:00
|
Revision: 6256 http://jython.svn.sourceforge.net/jython/?rev=6256&view=rev Author: pjenvey Date: 2009-04-23 05:46:39 +0000 (Thu, 23 Apr 2009) Log Message: ----------- fix test___all__ on windows Modified Paths: -------------- trunk/jython/Lib/os.py Modified: trunk/jython/Lib/os.py =================================================================== --- trunk/jython/Lib/os.py 2009-04-22 23:45:41 UTC (rev 6255) +++ trunk/jython/Lib/os.py 2009-04-23 05:46:39 UTC (rev 6256) @@ -30,15 +30,13 @@ 'O_RDWR', 'O_SYNC', 'O_TRUNC', 'O_WRONLY', 'R_OK', 'SEEK_CUR', 'SEEK_END', 'SEEK_SET', 'W_OK', 'X_OK', '_exit', 'access', 'altsep', 'chdir', 'chmod', 'close', 'curdir', 'defpath', - 'environ', 'error', 'fdopen', 'getcwd', 'getcwdu', 'getegid', - 'getenv','geteuid', 'getgid', 'getlogin', 'getlogin', 'getpgrp', - 'getpid', 'getppid', 'getuid', 'isatty', 'linesep', 'listdir', - 'lseek', 'lstat', 'makedirs', 'mkdir', 'name', 'open', 'pardir', - 'path', 'pathsep', 'popen', 'popen2', 'popen3', 'popen4', - 'putenv', 'read', 'remove', 'removedirs', 'rename', 'renames', - 'rmdir', 'sep', 'setpgrp', 'setsid', 'stat', 'stat_result', - 'strerror', 'system', 'unlink', 'unsetenv', 'utime', 'walk', - 'write']) + 'environ', 'error', 'fdopen', 'getcwd', 'getcwdu', 'getenv', + 'getpid', 'isatty', 'linesep', 'listdir', 'lseek', 'lstat', + 'makedirs', 'mkdir', 'name', 'open', 'pardir', 'path', + 'pathsep', 'popen', 'popen2', 'popen3', 'popen4', 'putenv', + 'read', 'remove', 'removedirs', 'rename', 'renames', 'rmdir', + 'sep', 'stat', 'stat_result', 'strerror', 'system', 'unlink', + 'unsetenv', 'utime', 'walk', 'write']) import errno import jarray @@ -1050,6 +1048,10 @@ raise OSError(status[0], strerror(status[0])) return res_pid, status[0] + __all__.extend(['link', 'symlink', 'readlink', 'getegid', 'geteuid', + 'getgid', 'getlogin', 'getpgrp', 'getppid', 'getuid', + 'setpgrp', 'setsid', 'kill', 'wait', 'waitpid']) + def getpid(): """getpid() -> pid This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pj...@us...> - 2009-05-26 06:51:06
|
Revision: 6381 http://jython.svn.sourceforge.net/jython/?rev=6381&view=rev Author: pjenvey Date: 2009-05-26 06:50:56 +0000 (Tue, 26 May 2009) Log Message: ----------- add os.fsync/datasync Modified Paths: -------------- trunk/jython/Lib/os.py Modified: trunk/jython/Lib/os.py =================================================================== --- trunk/jython/Lib/os.py 2009-05-26 06:49:37 UTC (rev 6380) +++ trunk/jython/Lib/os.py 2009-05-26 06:50:56 UTC (rev 6381) @@ -30,9 +30,9 @@ 'O_RDWR', 'O_SYNC', 'O_TRUNC', 'O_WRONLY', 'R_OK', 'SEEK_CUR', 'SEEK_END', 'SEEK_SET', 'W_OK', 'X_OK', '_exit', 'access', 'altsep', 'chdir', 'chmod', 'close', 'curdir', 'defpath', - 'environ', 'error', 'fdopen', 'getcwd', 'getcwdu', 'getenv', - 'getpid', 'isatty', 'linesep', 'listdir', 'lseek', 'lstat', - 'makedirs', 'mkdir', 'name', 'open', 'pardir', 'path', + 'environ', 'error', 'fdopen', 'fsync', 'getcwd', 'getcwdu', + 'getenv', 'getpid', 'isatty', 'linesep', 'listdir', 'lseek', + 'lstat', 'makedirs', 'mkdir', 'name', 'open', 'pardir', 'path', 'pathsep', 'popen', 'popen2', 'popen3', 'popen4', 'putenv', 'read', 'remove', 'removedirs', 'rename', 'renames', 'rmdir', 'sep', 'stat', 'stat_result', 'strerror', 'system', 'unlink', @@ -1048,10 +1048,41 @@ raise OSError(status[0], strerror(status[0])) return res_pid, status[0] + def fdatasync(fd): + """fdatasync(fildes) + + force write of file with filedescriptor to disk. + does not force update of metadata. + """ + _fsync(fd, False) + __all__.extend(['link', 'symlink', 'readlink', 'getegid', 'geteuid', 'getgid', 'getlogin', 'getpgrp', 'getppid', 'getuid', - 'setpgrp', 'setsid', 'kill', 'wait', 'waitpid']) + 'setpgrp', 'setsid', 'kill', 'wait', 'waitpid', + 'fdatasync']) +def fsync(fd): + """fsync(fildes) + + force write of file with filedescriptor to disk. + """ + _fsync(fd, True) + +def _fsync(fd, metadata): + """Internal fsync impl""" + rawio = FileDescriptors.get(fd) + rawio.checkClosed() + + from java.nio.channels import FileChannel + channel = rawio.getChannel() + if not isinstance(channel, FileChannel): + raise OSError(errno.EINVAL, strerror(errno.EINVAL)) + + try: + channel.force(metadata) + except java.io.IOException, ioe: + raise OSError(ioe) + def getpid(): """getpid() -> pid This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pj...@us...> - 2009-05-26 07:00:31
|
Revision: 6382 http://jython.svn.sourceforge.net/jython/?rev=6382&view=rev Author: pjenvey Date: 2009-05-26 07:00:22 +0000 (Tue, 26 May 2009) Log Message: ----------- upgrade Windows environ.os.update from CPython 2.5's os.py Modified Paths: -------------- trunk/jython/Lib/os.py Modified: trunk/jython/Lib/os.py =================================================================== --- trunk/jython/Lib/os.py 2009-05-26 06:50:56 UTC (rev 6381) +++ trunk/jython/Lib/os.py 2009-05-26 07:00:22 UTC (rev 6382) @@ -904,9 +904,22 @@ return key.upper() in self.data def get(self, key, failobj=None): return self.data.get(key.upper(), failobj) - def update(self, dict): - for k, v in dict.items(): - self[k] = v + def update(self, dict=None, **kwargs): + if dict: + try: + keys = dict.keys() + except AttributeError: + # List of (key, value) + for k, v in dict: + self[k] = v + else: + # got keys + # cannot use items(), since mappings + # may not have them. + for k in keys: + self[k] = dict[k] + if kwargs: + self.update(kwargs) def copy(self): return dict(self) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fwi...@us...> - 2009-08-10 17:01:38
|
Revision: 6637 http://jython.svn.sourceforge.net/jython/?rev=6637&view=rev Author: fwierzbicki Date: 2009-08-10 17:01:32 +0000 (Mon, 10 Aug 2009) Log Message: ----------- reindent. Trivial except for the class at the top that had 2 space indents. Modified Paths: -------------- trunk/jython/Lib/os.py Modified: trunk/jython/Lib/os.py =================================================================== --- trunk/jython/Lib/os.py 2009-08-10 16:48:17 UTC (rev 6636) +++ trunk/jython/Lib/os.py 2009-08-10 17:01:32 UTC (rev 6637) @@ -173,60 +173,60 @@ class stat_result: - _stat_members = ( - ('st_mode', _stat.ST_MODE), - ('st_ino', _stat.ST_INO), - ('st_dev', _stat.ST_DEV), - ('st_nlink', _stat.ST_NLINK), - ('st_uid', _stat.ST_UID), - ('st_gid', _stat.ST_GID), - ('st_size', _stat.ST_SIZE), - ('st_atime', _stat.ST_ATIME), - ('st_mtime', _stat.ST_MTIME), - ('st_ctime', _stat.ST_CTIME), - ) + _stat_members = ( + ('st_mode', _stat.ST_MODE), + ('st_ino', _stat.ST_INO), + ('st_dev', _stat.ST_DEV), + ('st_nlink', _stat.ST_NLINK), + ('st_uid', _stat.ST_UID), + ('st_gid', _stat.ST_GID), + ('st_size', _stat.ST_SIZE), + ('st_atime', _stat.ST_ATIME), + ('st_mtime', _stat.ST_MTIME), + ('st_ctime', _stat.ST_CTIME), + ) - def __init__(self, results): - if len(results) != 10: - raise TypeError("stat_result() takes an a 10-sequence") - for (name, index) in stat_result._stat_members: - self.__dict__[name] = results[index] + def __init__(self, results): + if len(results) != 10: + raise TypeError("stat_result() takes an a 10-sequence") + for (name, index) in stat_result._stat_members: + self.__dict__[name] = results[index] - @classmethod - def from_jnastat(cls, s): - results = [] - for meth in (s.mode, s.ino, s.dev, s.nlink, s.uid, s.gid, s.st_size, - s.atime, s.mtime, s.ctime): - try: - results.append(meth()) - except NotImplementedError: - results.append(0) - return cls(results) + @classmethod + def from_jnastat(cls, s): + results = [] + for meth in (s.mode, s.ino, s.dev, s.nlink, s.uid, s.gid, s.st_size, + s.atime, s.mtime, s.ctime): + try: + results.append(meth()) + except NotImplementedError: + results.append(0) + return cls(results) - def __getitem__(self, i): - if i < 0 or i > 9: - raise IndexError(i) - return getattr(self, stat_result._stat_members[i][0]) + def __getitem__(self, i): + if i < 0 or i > 9: + raise IndexError(i) + return getattr(self, stat_result._stat_members[i][0]) - def __setitem__(self, x, value): - raise TypeError("object doesn't support item assignment") + def __setitem__(self, x, value): + raise TypeError("object doesn't support item assignment") - def __setattr__(self, name, value): - if name in [x[0] for x in stat_result._stat_members]: - raise TypeError(name) - raise AttributeError("readonly attribute") + def __setattr__(self, name, value): + if name in [x[0] for x in stat_result._stat_members]: + raise TypeError(name) + raise AttributeError("readonly attribute") - def __len__(self): - return 10 + def __len__(self): + return 10 - def __cmp__(self, other): - if not isinstance(other, stat_result): - return 1 - return cmp(self.__dict__, other.__dict__) + def __cmp__(self, other): + if not isinstance(other, stat_result): + return 1 + return cmp(self.__dict__, other.__dict__) - def __repr__(self): - return repr(tuple(self.__dict__[member[0]] for member - in stat_result._stat_members)) + def __repr__(self): + return repr(tuple(self.__dict__[member[0]] for member + in stat_result._stat_members)) error = OSError @@ -247,7 +247,7 @@ def getcwdu(): """getcwd() -> path - + Return a unicode string representing the current working directory. """ return sys.getCurrentWorkingDir() @@ -514,8 +514,8 @@ # native abs_parent = f.getAbsoluteFile().getParentFile() if not abs_parent: - # root isn't a link - return stat(path) + # root isn't a link + return stat(path) can_parent = abs_parent.getCanonicalFile() if can_parent.getAbsolutePath() == abs_parent.getAbsolutePath(): @@ -1029,7 +1029,7 @@ # def fork(): # """fork() -> pid - # + # # Fork a child process. # Return 0 to child process and PID of child to parent process.""" # return _posix.fork() @@ -1042,7 +1042,7 @@ def wait(): """wait() -> (pid, status) - + Wait for completion of a child process.""" status = jarray.zeros(1, 'i') @@ -1063,7 +1063,7 @@ def fdatasync(fd): """fdatasync(fildes) - + force write of file with filedescriptor to disk. does not force update of metadata. """ @@ -1076,7 +1076,7 @@ def fsync(fd): """fsync(fildes) - + force write of file with filedescriptor to disk. """ _fsync(fd, True) @@ -1085,7 +1085,7 @@ """Internal fsync impl""" rawio = FileDescriptors.get(fd) rawio.checkClosed() - + from java.nio.channels import FileChannel channel = rawio.getChannel() if not isinstance(channel, FileChannel): This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pj...@us...> - 2009-08-16 01:30:56
|
Revision: 6668 http://jython.svn.sourceforge.net/jython/?rev=6668&view=rev Author: pjenvey Date: 2009-08-16 01:30:38 +0000 (Sun, 16 Aug 2009) Log Message: ----------- steal Python3's _wrap_close to fix popen files' close to return the exit status when its non-zero Modified Paths: -------------- trunk/jython/Lib/os.py Modified: trunk/jython/Lib/os.py =================================================================== --- trunk/jython/Lib/os.py 2009-08-16 01:11:01 UTC (rev 6667) +++ trunk/jython/Lib/os.py 2009-08-16 01:30:38 UTC (rev 6668) @@ -732,14 +732,35 @@ """ import subprocess if mode == 'r': - return subprocess.Popen(command, bufsize=bufsize, shell=True, - stdout=subprocess.PIPE).stdout + proc = subprocess.Popen(command, bufsize=bufsize, shell=True, + stdout=subprocess.PIPE) + return _wrap_close(proc.stdout, proc) elif mode == 'w': - return subprocess.Popen(command, bufsize=bufsize, shell=True, - stdin=subprocess.PIPE).stdin + proc = subprocess.Popen(command, bufsize=bufsize, shell=True, + stdin=subprocess.PIPE) + return _wrap_close(proc.stdin, proc) else: raise OSError(errno.EINVAL, strerror(errno.EINVAL)) +# Helper for popen() -- a proxy for a file whose close waits for the process +class _wrap_close(object): + def __init__(self, stream, proc): + self._stream = stream + self._proc = proc + def close(self): + self._stream.close() + returncode = self._proc.wait() + if returncode == 0: + return None + if _name == 'nt': + return returncode + else: + return returncode << 8 # Shift left to match old behavior + def __getattr__(self, name): + return getattr(self._stream, name) + def __iter__(self): + return iter(self._stream) + # os module versions of the popen# methods have different return value # order than popen2 functions This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pj...@us...> - 2009-08-16 02:36:41
|
Revision: 6670 http://jython.svn.sourceforge.net/jython/?rev=6670&view=rev Author: pjenvey Date: 2009-08-16 02:36:35 +0000 (Sun, 16 Aug 2009) Log Message: ----------- preserve our old exit code behavior Modified Paths: -------------- trunk/jython/Lib/os.py Modified: trunk/jython/Lib/os.py =================================================================== --- trunk/jython/Lib/os.py 2009-08-16 01:32:41 UTC (rev 6669) +++ trunk/jython/Lib/os.py 2009-08-16 02:36:35 UTC (rev 6670) @@ -755,7 +755,7 @@ if _name == 'nt': return returncode else: - return returncode << 8 # Shift left to match old behavior + return returncode def __getattr__(self, name): return getattr(self._stream, name) def __iter__(self): This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pj...@us...> - 2009-10-19 04:56:33
|
Revision: 6871 http://jython.svn.sourceforge.net/jython/?rev=6871&view=rev Author: pjenvey Date: 2009-10-19 04:56:15 +0000 (Mon, 19 Oct 2009) Log Message: ----------- two exceptions walk into a bar. ouch! Modified Paths: -------------- trunk/jython/Lib/os.py Modified: trunk/jython/Lib/os.py =================================================================== --- trunk/jython/Lib/os.py 2009-10-18 18:59:19 UTC (rev 6870) +++ trunk/jython/Lib/os.py 2009-10-19 04:56:15 UTC (rev 6871) @@ -478,8 +478,6 @@ return stat_result.from_jnastat(_posix.stat(abs_path)) except NotImplementedError: pass - except: - raise f = File(abs_path) if not f.exists(): raise OSError(errno.ENOENT, strerror(errno.ENOENT), path) @@ -506,8 +504,6 @@ return stat_result.from_jnastat(_posix.lstat(abs_path)) except NotImplementedError: pass - except: - raise f = File(sys.getPath(path)) # XXX: jna-posix implements similar link detection in # JavaFileStat.calculateSymlink, fallback to that instead when not This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pj...@us...> - 2009-10-23 01:53:08
|
Revision: 6888 http://jython.svn.sourceforge.net/jython/?rev=6888&view=rev Author: pjenvey Date: 2009-10-23 01:52:46 +0000 (Fri, 23 Oct 2009) Log Message: ----------- only import UserDict when necessary Modified Paths: -------------- trunk/jython/Lib/os.py Modified: trunk/jython/Lib/os.py =================================================================== --- trunk/jython/Lib/os.py 2009-10-21 01:58:03 UTC (rev 6887) +++ trunk/jython/Lib/os.py 2009-10-23 01:52:46 UTC (rev 6888) @@ -403,8 +403,6 @@ except NameError: pass else: - import UserDict - # Fake unsetenv() for Windows # not sure about os2 here but # I'm guessing they are the same. @@ -417,6 +415,8 @@ # On RISC OS, all env access goes through getenv and putenv from riscosenviron import _Environ elif _name in ('os2', 'nt'): # Where Env Var Names Must Be UPPERCASE + import UserDict + # But we store them as upper case class _Environ(UserDict.IterableUserDict): def __init__(self, environ): This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |