Example #1
0
 def _open_w (self, mode, bufsize, backup_name) :
     """Open locked file for writing"""
     curr_key, tmp_name = self._get_key_save ()
     result = None
     try :
         if curr_key == self.last_key :
             if curr_key :
                 if backup_name :
                     bak_name = Filename (backup_name, self.file_name).name
                     self.backup_name = bak_name
                     sos.rename (tmp_name, bak_name)
                 else :
                     self.backup_name = None
                     sos.remove (tmp_name)
             result      = open (self.file_name, mode, bufsize)
             self.exists = 1
         else :
             self.changed_key = curr_key
             raise Sync_Conflict (self)
     finally :
         if not result :
             sos.rename         (tmp_name, self.file_name)
         else :
             self._write_header (result)
     return result
Example #2
0
 def _open_w(self, mode, bufsize, backup_name):
     """Open locked file for writing"""
     curr_key, tmp_name = self._get_key_save()
     result = None
     try:
         if curr_key == self.last_key:
             if curr_key:
                 if backup_name:
                     bak_name = Filename(backup_name, self.file_name).name
                     self.backup_name = bak_name
                     sos.rename(tmp_name, bak_name)
                 else:
                     self.backup_name = None
                     sos.remove(tmp_name)
             result = open(self.file_name, mode, bufsize)
             self.exists = 1
         else:
             self.changed_key = curr_key
             raise Sync_Conflict(self)
     finally:
         if not result:
             sos.rename(tmp_name, self.file_name)
         else:
             self._write_header(result)
     return result
Example #3
0
def write_plan(Y, plan_file_name, replace=False):
    today = CAL.Date_Time()
    tail = today.formatted("%d.%m.%Y.%H:%M")
    if replace:
        sos.rename(plan_file_name, "%s-%s" % (plan_file_name, tail))
    else:
        plan_file_name = "%s.%s" % (plan_file_name, tail)
    CAL.write_year(Y.as_plan, plan_file_name, force=replace)
Example #4
0
File: Plan.py Project: Tapyr/tapyr
def write_plan (Y, plan_file_name, replace = False) :
    today = CAL.Date_Time ()
    tail  = today.formatted ("%d.%m.%Y.%H:%M")
    if replace :
        sos.rename (plan_file_name, "%s-%s" % (plan_file_name, tail))
    else :
        plan_file_name = "%s.%s" % (plan_file_name, tail)
    CAL.write_year (Y.as_plan, plan_file_name, force = replace)
Example #5
0
 def close(self):
     if self.name != self.sync_dir.file_name:
         assert self.backup_name
         if sos.path.isdir(self.backup_name):
             sos.rmdir(self.backup_name, deletefiles=1)
         sos.rename(self.sync_dir.file_name, self.backup_name)
         sos.rename(self.name, self.sync_dir.file_name)
         self.name = self.sync_dir.file_name
     self.__Ancestor.close(self)
Example #6
0
 def close (self) :
     if self.name != self.sync_dir.file_name :
         assert self.backup_name
         if sos.path.isdir (self.backup_name) :
             sos.rmdir (self.backup_name, deletefiles = 1)
         sos.rename (self.sync_dir.file_name, self.backup_name)
         sos.rename (self.name,               self.sync_dir.file_name)
         self.name = self.sync_dir.file_name
     self.__Ancestor.close (self)
Example #7
0
 def rename(self, new_name, dir, file):  ### XXX
     if file:
         ### rename the file
         file_name = self.abs_path(file)
         root_dir = file_name[:-len(file.path)]
         new_name = os.path.join(os.path.dirname(file_name), new_name)
         os.rename(file_name, new_name)
         file.set_raw(path=new_name[len(root_dir):])
         return self.file_entry(dir, file)
     else:
         ### rename the tag
         dir.set_raw(name=new_name)
         return self.directory_entry(dir)
Example #8
0
 def rename (self, new_name, dir, file) : ### XXX
     if file :
         ### rename the file
         file_name = self.abs_path (file)
         root_dir  = file_name [:-len (file.path)]
         new_name  = os.path.join (os.path.dirname (file_name), new_name)
         os.rename    (file_name, new_name)
         file.set_raw (path = new_name [len (root_dir):])
         return self.file_entry (dir, file)
     else :
         ### rename the tag
         dir.set_raw (name = new_name)
         return self.directory_entry (dir)
Example #9
0
File: Ascii.py Project: Tapyr/tapyr
def _main(cmd):
    """For each argument, write sanitized_filename to stdout. If `-rename` is
       specified, the files are renamed to the sanitized_filenames instead.
    """
    from _TFL import sos
    from _TFL.pyk import pyk

    for f in cmd.argv:
        sf = sanitized_filename(pyk.decoded(f))
        if cmd.rename:
            sos.rename(f, sf)
            if cmd.verbose:
                pyk.fprint("Renamed", f, "to", sf)
        else:
            pyk.fprint(sf, end=" ")
Example #10
0
def recode_file(name, input_encoding, output_encoding, backup=None, verbose=False):
    with open(name, "rb") as f:
        source = f.read()
    coding_rep = r"\g<head>%s\g<tail>" % output_encoding
    if coding_pat.search(source):
        input_encoding = coding_pat.encoding
    text = source.decode(input_encoding)
    if coding_pat.last_match:
        text = coding_pat.sub(coding_rep, text, 1)
    target = text.encode(output_encoding)
    if backup:
        sos.rename(name, name + backup)
    with open(name, "w+b") as f:
        f.write(target)
    if verbose:
        print("Converted %s from %s to %s" % (name, input_encoding, output_encoding))
Example #11
0
def _main(cmd):
    """For each argument, write sanitized_filename to stdout. If `-rename` is
       specified, the files are renamed to the sanitized_filenames instead.
    """
    from _TFL import sos
    from _TFL.pyk import pyk
    for f_b in cmd.argv:
        f = pyk.decoded(f_b)
        sf = sanitized_filename(f)
        sf_b = pyk.encoded(sf)
        if cmd.rename:
            if f_b != sf_b and sos.path.exists(f_b):
                sos.rename(f_b, sf_b)
                if cmd.verbose:
                    print("Renamed", f, "to", sf)
        else:
            print(sf, end=cmd.separator)
Example #12
0
File: Ascii.py Project: Tapyr/tapyr
def _main (cmd) :
    """For each argument, write sanitized_filename to stdout. If `-rename` is
       specified, the files are renamed to the sanitized_filenames instead.
    """
    from _TFL     import sos
    from _TFL.pyk import pyk
    for f_b in cmd.argv :
        f    = pyk.decoded (f_b)
        sf   = sanitized_filename (f)
        sf_b = pyk.encoded (sf)
        if cmd.rename :
            if f_b != sf_b and sos.path.exists (f_b) :
                sos.rename (f_b, sf_b)
                if cmd.verbose :
                    pyk.fprint ("Renamed", f, "to", sf)
        else :
            pyk.fprint (sf, end = cmd.separator)
Example #13
0
 def _get_key_save (self) :
     ### get current key of file
     ###     to make it save, rename the file first and read key afterwards
     tmp_name = sos.tempfile_name \
         (Filename (self.file_name).directory or sos.curdir)
     curr_key = ""
     try :
         sos.rename (self.file_name, tmp_name)
         curr_key = self._get_key (tmp_name)
     except sos.error as exc :
         if exc.args [0] != errno.ENOENT :
             raise
         tmp_name = None
     except (SystemExit, KeyboardInterrupt, IOError) as exc :
         raise
     except :
         pass
     return curr_key, tmp_name
Example #14
0
 def _get_key_save(self):
     ### get current key of file
     ###     to make it save, rename the file first and read key afterwards
     tmp_name = sos.tempfile_name \
         (Filename (self.file_name).directory or sos.curdir)
     curr_key = ""
     try:
         sos.rename(self.file_name, tmp_name)
         curr_key = self._get_key(tmp_name)
     except sos.error as exc:
         if exc.args[0] != errno.ENOENT:
             raise
         tmp_name = None
     except (SystemExit, KeyboardInterrupt, IOError) as exc:
         raise
     except:
         pass
     return curr_key, tmp_name
Example #15
0
def recode_file \
        (name, input_encoding, output_encoding, backup = None, verbose = False):
    with open (name, "rb") as f :
        source = f.read ()
    coding_rep = r"\g<head>%s\g<tail>" % output_encoding
    if coding_pat.search (source) :
        input_encoding = coding_pat.encoding
    text = source.decode (input_encoding)
    if coding_pat.last_match :
        text = coding_pat.sub (coding_rep, text, 1)
    target = text.encode (output_encoding)
    if backup :
        sos.rename (name, name + backup)
    with open (name, "w+b") as f :
        f.write (target)
    if verbose :
        print \
            ( "Converted %s from %s to %s"
            % (name, input_encoding, output_encoding)
            )
Example #16
0
File: FCM.py Project: Tapyr/tapyr
def open_to_replace (file_name, mode = "w", buffering = -1, backup_name = None) :
    """Context manager that opens a file with a temporary name and renames it
       to `file_name` after syncing and closing. If `backup_name` is
       specified, the old file is renamed to `backup_name`.
    """
    dir, name = sos.path.split (file_name)
    with open_tempfile (mode, buffering, prefix = name, dir = dir) as \
             (file, temp_name) :
        yield file
        file.flush ()
        sos.fsync  (file.fileno ())
        file.close ()
        if backup_name :
            try :
                sos.rename (file_name, backup_name)
            except sos.error as exc :
                if exc.args [0] != errno.ENOENT :
                    import traceback
                    traceback.print_exc ()
        sos.rename (temp_name, file_name)
Example #17
0
def open_to_replace(file_name, mode="w", buffering=-1, backup_name=None):
    """Context manager that opens a file with a temporary name and renames it
       to `file_name` after syncing and closing. If `backup_name` is
       specified, the old file is renamed to `backup_name`.
    """
    dir, name = sos.path.split(file_name)
    with open_tempfile (mode, buffering, prefix = name, dir = dir) as \
             (file, temp_name) :
        yield file
        file.flush()
        sos.fsync(file.fileno())
        file.close()
        if backup_name:
            try:
                sos.rename(file_name, backup_name)
            except sos.error as exc:
                if exc.args[0] != errno.ENOENT:
                    import traceback
                    traceback.print_exc()
        sos.rename(temp_name, file_name)