140528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger/* libs/graphics/ports/SkOSFile_brew.cpp
240528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger**
340528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger** Copyright 2006, The Android Open Source Project
440528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger** Copyright 2009, Company 100, Inc.
540528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger**
640528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger** Licensed under the Apache License, Version 2.0 (the "License");
740528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger** you may not use this file except in compliance with the License.
840528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger** You may obtain a copy of the License at
940528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger**
1040528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger**     http://www.apache.org/licenses/LICENSE-2.0
1140528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger**
1240528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger** Unless required by applicable law or agreed to in writing, software
1340528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger** distributed under the License is distributed on an "AS IS" BASIS,
1440528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1540528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger** See the License for the specific language governing permissions and
1640528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger** limitations under the License.
1740528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger*/
1840528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger
1940528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger#include "SkOSFile.h"
2040528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger
2140528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger#ifdef SK_BUILD_FOR_BREW
2240528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger
2340528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger#include <AEEAppGen.h>
2440528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger#include <AEEFile.h>
2540528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger#include <AEEStdLib.h>
2640528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger
2740528743dbb9ce7f39f093e0cdc47849ac8887cfDerek SollenbergerSkFILE* sk_fopen(const char path[], SkFILE_Flags flags)
2840528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger{
2940528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger    int err;
3040528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger    OpenFileMode mode;
3140528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger    IFileMgr* fileMgr;
3240528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger    IFile* file;
3340528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger    IShell* shell;
3440528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger
3540528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger    shell = reinterpret_cast<AEEApplet*>(GETAPPINSTANCE())->m_pIShell;
3640528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger    err = ISHELL_CreateInstance(shell, AEECLSID_FILEMGR, (void**)&fileMgr);
3740528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger    if (err!= SUCCESS)
3840528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger        return NULL;
3940528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger
4040528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger    if (flags & kWrite_SkFILE_Flag)
4140528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger        mode = _OFM_READWRITE;
4240528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger    else /* kRead_SkFILE_Flag */
4340528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger        mode = _OFM_READ;
4440528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger
4540528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger    file = IFILEMGR_OpenFile(fileMgr, path, mode);
4640528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger    IFILEMGR_Release(fileMgr);
4740528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger
4840528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger    return (SkFILE*)file;
4940528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger}
5040528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger
5140528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenbergersize_t sk_fgetsize(SkFILE* f)
5240528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger{
5340528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger    FileInfo fileInfo;
5440528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger
5540528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger    IFILE_GetInfo((IFile*)f, &fileInfo);
5640528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger    return fileInfo.dwSize;
5740528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger}
5840528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger
5940528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenbergerbool sk_frewind(SkFILE* f)
6040528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger{
6140528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger    SkASSERT(f);
6240528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger    return IFILE_Seek((IFile*)f,  _SEEK_START, 0) == SUCCESS;
6340528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger}
6440528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger
6540528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenbergersize_t sk_fread(void* buffer, size_t byteCount, SkFILE* f)
6640528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger{
6740528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger    SkASSERT(f);
6840528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger    if (buffer == NULL)
6940528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger    {
7040528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger        int err = IFILE_Seek((IFile*)f, _SEEK_CURRENT, (int)byteCount);
7140528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger        if (err == EFAILED) {
7240528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger            SkDEBUGF(("sk_fread: IFILE_Seek(%d) failed returned:%d\n", byteCount, err));
7340528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger            return 0;
7440528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger        }
7540528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger        return byteCount;
7640528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger    }
7740528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger    else
7840528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger        return IFILE_Read((IFile*)f, buffer, byteCount);
7940528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger}
8040528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger
8140528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenbergersize_t sk_fwrite(const void* buffer, size_t byteCount, SkFILE* f)
8240528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger{
8340528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger    SkASSERT(f);
8440528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger    return IFILE_Write((IFile*)f, buffer, byteCount);
8540528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger}
8640528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger
8740528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenbergervoid sk_fflush(SkFILE* f)
8840528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger{
8940528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger    SkASSERT(f);
9040528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger}
9140528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger
9240528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenbergervoid sk_fclose(SkFILE* f)
9340528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger{
9440528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger    SkASSERT(f);
9540528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger    IFILE_Release((IFile*)f);
9640528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger}
9740528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger
9840528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger#endif
9940528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger
100