def do_save_image(result, grabber):
    """Result handler to save a result to the system.

    Modifies the supplied result dict with:

        * ``save_dir`` = the root directory for saving images
        * ``save_path`` = the configured path for saving images
        * ``save_path_full`` = the full path, token filtered
        * ``is_saved`` = whether the image has actually been saved or not

    Args:
        result (dict): A result dict to process.
        grabber (camgrab.Grabber): A Grabber instanced, used to get setings,
            etc. from.
    """
    result['save_dir'] = grabber.save_dir
    result['save_path'] = grabber.get_save_path()
    result['save_path_full'] = grabber.format_path(result['save_path'], result)
    result['is_saved'] = False
    if not result.get('image', False):
        return result
    if grabber.should_save_image():
        grabber.make_save_path_dirs(result['save_path_full'])
        result['image'].save(result['save_path_full'])
        result['is_saved'] = True
    return result
