Changeset 677


Ignore:
Timestamp:
02/09/03 13:05:36 (19 years ago)
Author:
piso
Message:

Update cache if we gunzip the file when determining the file type.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/j/src/org/armedbear/j/Buffer.java

    r668 r677  
    33 *
    44 * Copyright (C) 1998-2002 Peter Graves
    5  * $Id: Buffer.java,v 1.29 2003-02-05 15:49:26 piso Exp $
     5 * $Id: Buffer.java,v 1.30 2003-02-09 13:05:36 piso Exp $
    66 *
    77 * This program is free software; you can redistribute it and/or
     
    264264    protected static Buffer createBuffer(File file, File cache, String listing)
    265265    {
    266         int fileType = getFileType(file, cache);
    267         if (fileType == FILETYPE_JPEG ||
    268             Editor.getModeList().modeAccepts(IMAGE_MODE, file.getName())) {
    269             Buffer buffer =
    270                 ImageBuffer.createImageBuffer(file, cache, listing);
    271             if (buffer != null) {
    272                 buffer.setFileType(fileType);
    273                 return buffer;
    274             }
    275         }
    276         // Normal case.
    277         Buffer buffer = new Buffer(file);
    278         Debug.assertTrue(Editor.getBufferList().contains(buffer));
    279         buffer.setFileType(fileType);
    280         buffer.setCache(cache);
    281         buffer.setListing(listing);
    282         if (file.isLocal() && !file.isFile())
    283             buffer.setNewFile(true);
    284         return buffer;
    285     }
    286 
    287     // For Session.createBuffers().
    288     public static Buffer precreateBuffer(File file)
    289     {
    290         if (file == null) {
    291             Debug.bug();
    292             return null;
    293         }
    294         if (file.isRemote()) {
    295             Debug.bug();
    296             return null;
    297         }
    298         // Special case for unsent messages.
    299         File dir = file.getParentFile();
    300         if (dir != null && dir.equals(Directories.getDraftsFolder())) {
    301             Mode sendMailMode = Editor.getModeList().getMode(SEND_MAIL_MODE);
    302             if (sendMailMode != null)
    303                 return sendMailMode.createBuffer(file);
    304         }
    305         // Normal case.
    306         return new Buffer(file);
    307     }
    308 
    309     private static final int getFileType(File file, File cache)
    310     {
    311266        int fileType = Utilities.getFileType(cache != null ? cache : file);
    312267        if (fileType == FILETYPE_GZIP) {
     
    320275                fileType = FILETYPE_BINARY; // Something went wrong.
    321276        }
    322         return fileType;
     277        if (fileType == FILETYPE_JPEG ||
     278            Editor.getModeList().modeAccepts(IMAGE_MODE, file.getName())) {
     279            Buffer buffer =
     280                ImageBuffer.createImageBuffer(file, cache, listing);
     281            if (buffer != null) {
     282                buffer.setFileType(fileType);
     283                return buffer;
     284            }
     285        }
     286        // Normal case.
     287        Buffer buffer = new Buffer(file);
     288        Debug.assertTrue(Editor.getBufferList().contains(buffer));
     289        buffer.setFileType(fileType);
     290        buffer.setCache(cache);
     291        buffer.setListing(listing);
     292        if (file.isLocal() && !file.isFile())
     293            buffer.setNewFile(true);
     294        return buffer;
     295    }
     296
     297    // For Session.createBuffers().
     298    public static Buffer precreateBuffer(File file)
     299    {
     300        if (file == null) {
     301            Debug.bug();
     302            return null;
     303        }
     304        if (file.isRemote()) {
     305            Debug.bug();
     306            return null;
     307        }
     308        // Special case for unsent messages.
     309        File dir = file.getParentFile();
     310        if (dir != null && dir.equals(Directories.getDraftsFolder())) {
     311            Mode sendMailMode = Editor.getModeList().getMode(SEND_MAIL_MODE);
     312            if (sendMailMode != null)
     313                return sendMailMode.createBuffer(file);
     314        }
     315        // Normal case.
     316        return new Buffer(file);
    323317    }
    324318
     
    339333        Debug.assertTrue(!initialized);
    340334        final File file = getFile();
    341         if (fileType == FILETYPE_UNKNOWN)
    342             fileType = getFileType(file, cache);
     335        if (fileType == FILETYPE_UNKNOWN) {
     336            fileType = Utilities.getFileType(cache != null ? cache : file);
     337            if (fileType == FILETYPE_GZIP) {
     338                // If we're looking at a remote file, gunzip the cached copy
     339                // of it; otherwise, gunzip the file itself into the cache.
     340                File uncompressed = cacheGZIP(cache != null ? cache : file);
     341                if (uncompressed != null) {
     342                    cache = uncompressed;
     343                    fileType = Utilities.getFileType(cache);
     344                } else
     345                    fileType = FILETYPE_BINARY; // Something went wrong.
     346            }
     347        }
    343348        mode = getDefaultMode();
    344349        formatter = mode.getFormatter(this);
Note: See TracChangeset for help on using the changeset viewer.