Example #1
0
def convert():
    """ Perform file format conversion. """
    import program
    import disk
    import error
    # set conversion output
    # first arg, if given, is mode; second arg, if given, is outfile
    mode = config.get('convert')
    infile = (config.get(0) or config.get('run') or config.get('load'))
    outfile = config.get(1)
    # keep uppercase first letter
    mode = mode[0].upper() if mode else 'A'
    # load & save in different format
    try:
        prog_infile = None
        if infile:
            prog_infile = open_native_or_dos_filename(infile)
        elif plat.has_stdin:
            # use StringIO buffer for seekability
            in_buffer = StringIO(sys.stdin.read())
            prog_infile = disk.open_diskfile(in_buffer,
                                             filetype='ABP',
                                             mode='I')
        if prog_infile:
            with prog_infile:
                program.load(prog_infile)
        prog_outfile = None
        if outfile:
            # on save from command-line, use exact file name
            prog_outfile = disk.open_diskfile(open(outfile, 'wb'),
                                              filetype=mode,
                                              mode='O')
        elif plat.has_stdout:
            prog_outfile = disk.open_diskfile(sys.stdout,
                                              filetype=mode,
                                              mode='O')
        if prog_outfile:
            with prog_outfile:
                program.save(prog_outfile)
    except error.RunError as e:
        logging.error(error.get_message(e.err))
    except EnvironmentError as e:
        logging.error(str(e))
Example #2
0
def open_native_or_dos_filename(infile):
    """ If the specified file exists, open it; if not, try as DOS file name. """
    import devices
    import disk
    import cassette
    import error
    try:
        # first try exact file name
        return disk.open_diskfile(open(os.path.expandvars(os.path.expanduser(infile)), 'r'), filetype='BPA', mode='I')
    except EnvironmentError as e:
        # otherwise, accept capitalised versions and default extension
        return devices.open_file(0, infile, filetype='BPA', mode='I')
Example #3
0
def convert():
    """ Perform file format conversion. """
    import program
    import disk
    import error
    # set conversion output
    # first arg, if given, is mode; second arg, if given, is outfile
    mode = config.get('convert')
    infile = (config.get(0) or
              config.get('run') or config.get('load'))
    outfile = config.get(1)
    # keep uppercase first letter
    mode = mode[0].upper() if mode else 'A'
    # load & save in different format
    try:
        prog_infile = None
        if infile:
            prog_infile = open_native_or_dos_filename(infile)
        elif plat.has_stdin:
            # use StringIO buffer for seekability
            in_buffer = StringIO(sys.stdin.read())
            prog_infile = disk.open_diskfile(in_buffer, filetype='ABP', mode='I')
        if prog_infile:
            with prog_infile:
                program.load(prog_infile)
        prog_outfile = None
        if outfile:
            # on save from command-line, use exact file name
            prog_outfile = disk.open_diskfile(open(outfile, 'wb'), filetype=mode, mode='O')
        elif plat.has_stdout:
            prog_outfile = disk.open_diskfile(sys.stdout, filetype=mode, mode='O')
        if prog_outfile:
            with prog_outfile:
                program.save(prog_outfile)
    except error.RunError as e:
        logging.error(error.get_message(e.err))
    except EnvironmentError as e:
        logging.error(str(e))
Example #4
0
def open_native_or_dos_filename(infile):
    """ If the specified file exists, open it; if not, try as DOS file name. """
    import devices
    import disk
    import cassette
    import error
    try:
        # first try exact file name
        return disk.open_diskfile(open(
            os.path.expandvars(os.path.expanduser(infile)), 'r'),
                                  filetype='BPA',
                                  mode='I')
    except EnvironmentError as e:
        # otherwise, accept capitalised versions and default extension
        return devices.open_file(0, infile, filetype='BPA', mode='I')