about summary refs log tree commit diff stats
path: root/config.arg.h
Commit message (Expand)AuthorAgeFilesLines
...
* using a more blue-ish color...arg@mig292006-11-081-2/+2
* making the selected color more lightningarg@mig292006-11-081-1/+1
* renamed resizecol into resizemaster 2.1arg@mig292006-10-311-2/+2
* in a 1920x1200 setup 40 pixels of snap value are much better than 20arg@mig292006-10-301-1/+1
* added screen-border snapping in floating mode, feels quite wellarg@mig292006-10-301-0/+1
* stupid urxvt needs bg to highlight selections in a sane way, though that make...arg@mig292006-10-271-1/+1
* applied sander's config.*h nitpick patcharg@mig292006-10-261-4/+4
* forgot to use -tr, which actually prevents the ugly flicker (using xsetroot -...arg@mig292006-10-261-1/+1
* using MASTER 600 again, it is definately better, and using urxvtc for the mom...arg@mig292006-10-261-2/+2
* changing MASTER in config.arg.h from 600 to 550 per thousandarg@mig292006-10-261-1/+1
* my new 1920x1200 Z61p arrived, now I can use terminus in a sane way...arg@mig292006-10-261-1/+1
* using lsx instead of Jukka's shell constructAnselm R. Garbe2006-10-131-4/+3
* code polishing, removed unnecessary newlinesAnselm R. Garbe2006-10-061-2/+1
* removed the stack position stuffAnselm R. Garbe2006-10-051-7/+4
* changing MASTER value from percent into per millAnselm R. Garbe2006-10-051-3/+3
* keep master ratio on resizecol -> arrangeAnselm R. Garbe2006-10-051-2/+2
* using ff tiled again, seems to work perfectly with new bottom stackAnselm R. Garbe2006-09-291-1/+1
* added symbols for different modesAnselm R. Garbe2006-09-291-2/+3
* removed useless updatemasterAnselm R. Garbe2006-09-291-1/+1
* removed the direction flippingAnselm R. Garbe2006-09-291-2/+0
* small changeAnselm R. Garbe2006-09-291-1/+1
* added the new dotile as described on mlAnselm R. Garbe2006-09-291-0/+2
* first step to a more flexible dotile() algorithmAnselm R. Garbe2006-09-291-2/+4
* small changearg@mmvi2006-09-261-2/+2
* small fixarg@mmvi2006-09-261-1/+1
* changed order of colordefs in config.h's, changed config.arg.h to fit to new ...arg@mmvi2006-09-261-4/+5
* slight change to config.arg.h (I use ff floating)arg@mmvi2006-09-221-1/+1
* implemented the maximization as I described on the mailinglist, this feels be...arg@mmvi2006-09-221-1/+0
* fixed executing of dmenu output to handle args correctlyAnselm R. Garbe2006-09-121-1/+1
* ach ich will auch Alt-sAnselm R. Garbe2006-09-051-0/+1
* renamed resizetile into resizecolAnselm R. Garbe2006-09-051-1/+1
* s/growcol/resizetile/gAnselm R. Garbe2006-09-051-1/+1
* I really need column growing, now pushing upstreamAnselm R. Garbe2006-09-051-0/+1
* changed shortcut into Mod1-0Anselm R. Garbe2006-08-311-1/+1
* added viewall to mainstream (only Ross Mohns version, not the toggle)Anselm R. Garbe2006-08-311-0/+1
* small fix in config.arg.hAnselm R. Garbe2006-08-301-3/+3
* now using Salmi's menu commandAnselm R. Garbe2006-08-301-2/+3
* removed crappy variablesAnselm R. Garbe2006-08-281-0/+4
* changed config.arg.h - I really need the 4th tagAnselm R. Garbe2006-08-281-1/+1
* oh frking dear big font...Anselm R. Garbe2006-08-251-1/+1
* term enlightenedAnselm R. Garbe2006-08-251-1/+1
* switching to darker colorscheme with larger fontAnselm R. Garbe2006-08-251-7/+7
* patched arg.hAnselm R. Garbe2006-08-251-1/+1
* new stuffAnselm R. Garbe2006-08-251-1/+1
* switching to dark colors againAnselm R. Garbe2006-08-251-6/+6
* changed order of optionsAnselm R. Garbe2006-08-251-2/+2
* trying a different configurationAnselm R. Garbe2006-08-251-2/+2
* s/TILED/TILE/gAnselm R. Garbe2006-08-251-1/+1
* removed a bunch of lines, made mode symbols configurableAnselm R. Garbe2006-08-251-0/+2
* restored config.arg.hAnselm R. Garbe2006-08-251-16/+12
ass="mi">1024): """copy data from file-like object fsrc to file-like object fdst""" while 1: buf = fsrc.read(length) if not buf: break fdst.write(buf) yield def _samefile(src, dst): # Macintosh, Unix. if hasattr(os.path,'samefile'): try: return os.path.samefile(src, dst) except OSError: return False # All other platforms: check for same pathname. return (os.path.normcase(os.path.abspath(src)) == os.path.normcase(os.path.abspath(dst))) def copyfile(src, dst): """Copy data from src to dst""" if _samefile(src, dst): raise Error("`%s` and `%s` are the same file" % (src, dst)) fsrc = None fdst = None for fn in [src, dst]: try: st = os.stat(fn) except OSError: # File most likely does not exist pass else: # XXX What about other special files? (sockets, devices...) if stat.S_ISFIFO(st.st_mode): raise SpecialFileError("`%s` is a named pipe" % fn) try: fsrc = open(src, 'rb') fdst = open(dst, 'wb') for _ in copyfileobj(fsrc, fdst): yield finally: if fdst: fdst.close() if fsrc: fsrc.close() def copymode(src, dst): """Copy mode bits from src to dst""" if hasattr(os, 'chmod'): st = os.stat(src) mode = stat.S_IMODE(st.st_mode) try: os.chmod(dst, mode) except: pass def copystat(src, dst): """Copy all stat info (mode bits, atime, mtime, flags) from src to dst""" st = os.stat(src) mode = stat.S_IMODE(st.st_mode) if hasattr(os, 'utime'): try: os.utime(dst, (st.st_atime, st.st_mtime)) except: pass if hasattr(os, 'chmod'): try: os.chmod(dst, mode) except: pass if hasattr(os, 'chflags') and hasattr(st, 'st_flags'): try: os.chflags(dst, st.st_flags) except: pass def copy(src, dst, overwrite=False): """Copy data and mode bits ("cp src dst"). The destination may be a directory. """ if os.path.isdir(dst): dst = os.path.join(dst, os.path.basename(src)) if not overwrite: dst = get_safe_path(dst) for _ in copyfile(src, dst): yield copymode(src, dst) def copy2(src, dst, overwrite=False, symlinks=False): """Copy data and all stat info ("cp -p src dst"). The destination may be a directory. """ if os.path.isdir(dst): dst = os.path.join(dst, os.path.basename(src)) if not overwrite: dst = get_safe_path(dst) if symlinks and os.path.islink(src): linkto = os.readlink(src) os.symlink(linkto, dst) else: for _ in copyfile(src, dst): yield copystat(src, dst) def get_safe_path(dst): if not os.path.exists(dst): return dst if not dst.endswith(APPENDIX): dst += APPENDIX if not os.path.exists(dst): return dst n = 0 test_dst = dst + str(n) while os.path.exists(test_dst): n += 1 test_dst = dst + str(n) return test_dst def ignore_patterns(*patterns): """Function that can be used as copytree() ignore parameter. Patterns is a sequence of glob-style patterns that are used to exclude files""" def _ignore_patterns(path, names): ignored_names = [] for pattern in patterns: ignored_names.extend(fnmatch.filter(names, pattern)) return set(ignored_names) return _ignore_patterns def copytree(src, dst, symlinks=False, ignore=None, overwrite=False): """Recursively copy a directory tree using copy2(). The destination directory must not already exist. If exception(s) occur, an Error is raised with a list of reasons. If the optional symlinks flag is true, symbolic links in the source tree result in symbolic links in the destination tree; if it is false, the contents of the files pointed to by symbolic links are copied. The optional ignore argument is a callable. If given, it is called with the `src` parameter, which is the directory being visited by copytree(), and `names` which is the list of `src` contents, as returned by os.listdir(): callable(src, names) -> ignored_names Since copytree() is called recursively, the callable will be called once for each directory that is copied. It returns a list of names relative to the `src` directory that should not be copied. XXX Consider this example code rather than the ultimate tool. """ names = os.listdir(src) if ignore is not None: ignored_names = ignore(src, names) else: ignored_names = set() errors = [] try: os.makedirs(dst) except Exception as err: if not overwrite: dst = get_safe_path(dst) os.makedirs(dst) for name in names: if name in ignored_names: continue srcname = os.path.join(src, name) dstname = os.path.join(dst, name) try: if symlinks and os.path.islink(srcname): linkto = os.readlink(srcname) if os.path.lexists(dstname): if not os.path.islink(dstname) \ or os.readlink(dstname) != linkto: os.unlink(dstname) os.symlink(linkto, dstname) elif os.path.isdir(srcname): for _ in copytree(srcname, dstname, symlinks, ignore, overwrite): yield else: # Will raise a SpecialFileError for unsupported file types for _ in copy2(srcname, dstname, overwrite=overwrite, symlinks=symlinks): yield # catch the Error from the recursive copytree so that we can # continue with other files except Error as err: errors.extend(err.args[0]) except EnvironmentError as why: errors.append((srcname, dstname, str(why))) try: copystat(src, dst) except OSError as why: if WindowsError is not None and isinstance(why, WindowsError): # Copying file access times may fail on Windows pass else: errors.extend((src, dst, str(why))) if errors: raise Error(errors) def rmtree(path, ignore_errors=False, onerror=None): """Recursively delete a directory tree. If ignore_errors is set, errors are ignored; otherwise, if onerror is set, it is called to handle the error with arguments (func, path, exc_info) where func is os.listdir, os.remove, or os.rmdir; path is the argument to that function that caused it to fail; and exc_info is a tuple returned by sys.exc_info(). If ignore_errors is false and onerror is None, an exception is raised. """ if ignore_errors: def onerror(*args): pass elif onerror is None: def onerror(*args): raise try: if os.path.islink(path): # symlinks to directories are forbidden, see bug #1669 raise OSError("Cannot call rmtree on a symbolic link") except OSError: onerror(os.path.islink, path, sys.exc_info()) # can't continue even if onerror hook returns return names = [] try: names = os.listdir(path) except os.error as err: onerror(os.listdir, path, sys.exc_info()) for name in names: fullname = os.path.join(path, name) try: mode = os.lstat(fullname).st_mode except os.error: mode = 0 if stat.S_ISDIR(mode): rmtree(fullname, ignore_errors, onerror) else: try: os.remove(fullname) except os.error as err: onerror(os.remove, fullname, sys.exc_info()) try: os.rmdir(path) except os.error: onerror(os.rmdir, path, sys.exc_info()) def _basename(path): # A basename() variant which first strips the trailing slash, if present. # Thus we always get the last component of the path, even for directories. return os.path.basename(path.rstrip(os.path.sep)) def move(src, dst, overwrite=False): """Recursively move a file or directory to another location. This is similar to the Unix "mv" command. If the destination is a directory or a symlink to a directory, the source is moved inside the directory. The destination path must not already exist. If the destination already exists but is not a directory, it may be overwritten depending on os.rename() semantics. If the destination is on our current filesystem, then rename() is used. Otherwise, src is copied to the destination and then removed. A lot more could be done here... A look at a mv.c shows a lot of the issues this implementation glosses over. """ real_dst = dst if not overwrite: real_dst = get_safe_path(os.path.join(dst, _basename(src))) try: os.rename(src, real_dst) except OSError: if os.path.isdir(src): if _destinsrc(src, dst): raise Error("Cannot move a directory '%s' into itself '%s'." % (src, dst)) for _ in copytree(src, real_dst, symlinks=True, overwrite=overwrite): yield rmtree(src) else: for _ in copy2(src, real_dst, symlinks=True, overwrite=overwrite): yield os.unlink(src) def _destinsrc(src, dst): src = abspath(src) dst = abspath(dst) if not src.endswith(os.path.sep): src += os.path.sep if not dst.endswith(os.path.sep): dst += os.path.sep return dst.startswith(src) # vi: expandtab sts=4 ts=4 sw=4