| Index: src/core/SkFDStream.cpp
|
| ===================================================================
|
| --- src/core/SkFDStream.cpp (revision 9222)
|
| +++ src/core/SkFDStream.cpp (working copy)
|
| @@ -1,104 +0,0 @@
|
| -
|
| -/*
|
| - * Copyright 2011 Google Inc.
|
| - *
|
| - * Use of this source code is governed by a BSD-style license that can be
|
| - * found in the LICENSE file.
|
| - */
|
| -#include "SkStream.h"
|
| -
|
| -#ifdef SK_BUILD_FOR_WIN
|
| -
|
| -// -1 means isValid() will return false
|
| -SkFDStream::SkFDStream(int, bool) : fFD(-1), fCloseWhenDone(false) {}
|
| -SkFDStream::~SkFDStream() {}
|
| -bool SkFDStream::rewind() { return false; }
|
| -size_t SkFDStream::read(void*, size_t) { return 0; }
|
| -
|
| -#else
|
| -
|
| -#include <unistd.h>
|
| -
|
| -//#define TRACE_FDSTREAM
|
| -
|
| -SkFDStream::SkFDStream(int fileDesc, bool closeWhenDone)
|
| - : fFD(fileDesc), fCloseWhenDone(closeWhenDone) {
|
| -}
|
| -
|
| -SkFDStream::~SkFDStream() {
|
| - if (fFD >= 0 && fCloseWhenDone) {
|
| - ::close(fFD);
|
| - }
|
| -}
|
| -
|
| -bool SkFDStream::rewind() {
|
| - if (fFD >= 0) {
|
| - off_t value = ::lseek(fFD, 0, SEEK_SET);
|
| -#ifdef TRACE_FDSTREAM
|
| - if (value) {
|
| - SkDebugf("xxxxxxxxxxxxxx rewind failed %d\n", value);
|
| - }
|
| -#endif
|
| - return value == 0;
|
| - }
|
| - return false;
|
| -}
|
| -
|
| -size_t SkFDStream::read(void* buffer, size_t size) {
|
| - if (fFD >= 0) {
|
| - if (buffer == NULL && size == 0) { // request total size
|
| - off_t curr = ::lseek(fFD, 0, SEEK_CUR);
|
| - if (curr < 0) {
|
| -#ifdef TRACE_FDSTREAM
|
| - SkDebugf("xxxxxxxxxxxxx lseek failed 0 CURR\n");
|
| -#endif
|
| - return 0; // error
|
| - }
|
| - off_t size = ::lseek(fFD, 0, SEEK_END);
|
| - if (size < 0) {
|
| -#ifdef TRACE_FDSTREAM
|
| - SkDebugf("xxxxxxxxxxxxx lseek failed 0 END\n");
|
| -#endif
|
| - size = 0; // error
|
| - }
|
| - if (::lseek(fFD, curr, SEEK_SET) != curr) {
|
| - // can't restore, error
|
| -#ifdef TRACE_FDSTREAM
|
| - SkDebugf("xxxxxxxxxxxxx lseek failed %d SET\n", curr);
|
| -#endif
|
| - return 0;
|
| - }
|
| - return (size_t) size;
|
| - } else if (NULL == buffer) { // skip
|
| - off_t oldCurr = ::lseek(fFD, 0, SEEK_CUR);
|
| - if (oldCurr < 0) {
|
| -#ifdef TRACE_FDSTREAM
|
| - SkDebugf("xxxxxxxxxxxxx lseek1 failed %d CUR\n", oldCurr);
|
| -#endif
|
| - return 0; // error;
|
| - }
|
| - off_t newCurr = ::lseek(fFD, size, SEEK_CUR);
|
| - if (newCurr < 0) {
|
| -#ifdef TRACE_FDSTREAM
|
| - SkDebugf("xxxxxxxxxxxxx lseek2 failed %d CUR\n", newCurr);
|
| -#endif
|
| - return 0; // error;
|
| - }
|
| - // return the actual amount we skipped
|
| - return (size_t) (newCurr - oldCurr);
|
| - } else { // read
|
| - ssize_t actual = ::read(fFD, buffer, size);
|
| - // our API can't return an error, so we return 0
|
| - if (actual < 0) {
|
| -#ifdef TRACE_FDSTREAM
|
| - SkDebugf("xxxxxxxxxxxxx read failed %d actual %d\n", size, actual);
|
| -#endif
|
| - actual = 0;
|
| - }
|
| - return actual;
|
| - }
|
| - }
|
| - return 0;
|
| -}
|
| -
|
| -#endif
|
|
|