file_wrapper_output.cpp revision 7cd4c49d575478b2380f129dcd376a4e5e37939c
17cd4c49d575478b2380f129dcd376a4e5e37939cStephen Hines/*
27cd4c49d575478b2380f129dcd376a4e5e37939cStephen Hines * Copyright 2012, The Android Open Source Project
37cd4c49d575478b2380f129dcd376a4e5e37939cStephen Hines *
47cd4c49d575478b2380f129dcd376a4e5e37939cStephen Hines * Licensed under the Apache License, Version 2.0 (the "License");
57cd4c49d575478b2380f129dcd376a4e5e37939cStephen Hines * you may not use this file except in compliance with the License.
67cd4c49d575478b2380f129dcd376a4e5e37939cStephen Hines * You may obtain a copy of the License at
77cd4c49d575478b2380f129dcd376a4e5e37939cStephen Hines *
87cd4c49d575478b2380f129dcd376a4e5e37939cStephen Hines *     http://www.apache.org/licenses/LICENSE-2.0
97cd4c49d575478b2380f129dcd376a4e5e37939cStephen Hines *
107cd4c49d575478b2380f129dcd376a4e5e37939cStephen Hines * Unless required by applicable law or agreed to in writing, software
117cd4c49d575478b2380f129dcd376a4e5e37939cStephen Hines * distributed under the License is distributed on an "AS IS" BASIS,
127cd4c49d575478b2380f129dcd376a4e5e37939cStephen Hines * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
137cd4c49d575478b2380f129dcd376a4e5e37939cStephen Hines * See the License for the specific language governing permissions and
147cd4c49d575478b2380f129dcd376a4e5e37939cStephen Hines * limitations under the License.
157cd4c49d575478b2380f129dcd376a4e5e37939cStephen Hines */
167cd4c49d575478b2380f129dcd376a4e5e37939cStephen Hines
177cd4c49d575478b2380f129dcd376a4e5e37939cStephen Hines#include <stdlib.h>
187cd4c49d575478b2380f129dcd376a4e5e37939cStephen Hines
197cd4c49d575478b2380f129dcd376a4e5e37939cStephen Hines#include "bcinfo/Wrap/file_wrapper_output.h"
207cd4c49d575478b2380f129dcd376a4e5e37939cStephen Hines
217cd4c49d575478b2380f129dcd376a4e5e37939cStephen HinesFileWrapperOutput::FileWrapperOutput(const char* name)
227cd4c49d575478b2380f129dcd376a4e5e37939cStephen Hines    : _name(name) {
237cd4c49d575478b2380f129dcd376a4e5e37939cStephen Hines  _file = fopen(name, "wb");
247cd4c49d575478b2380f129dcd376a4e5e37939cStephen Hines  if (NULL == _file) {
257cd4c49d575478b2380f129dcd376a4e5e37939cStephen Hines    fprintf(stderr, "Unable to open: %s\n", name);
267cd4c49d575478b2380f129dcd376a4e5e37939cStephen Hines    exit(1);
277cd4c49d575478b2380f129dcd376a4e5e37939cStephen Hines  }
287cd4c49d575478b2380f129dcd376a4e5e37939cStephen Hines}
297cd4c49d575478b2380f129dcd376a4e5e37939cStephen Hines
307cd4c49d575478b2380f129dcd376a4e5e37939cStephen HinesFileWrapperOutput::~FileWrapperOutput() {
317cd4c49d575478b2380f129dcd376a4e5e37939cStephen Hines  fclose(_file);
327cd4c49d575478b2380f129dcd376a4e5e37939cStephen Hines}
337cd4c49d575478b2380f129dcd376a4e5e37939cStephen Hines
347cd4c49d575478b2380f129dcd376a4e5e37939cStephen Hinesbool FileWrapperOutput::Write(uint8_t byte) {
357cd4c49d575478b2380f129dcd376a4e5e37939cStephen Hines  return EOF != fputc(byte, _file);
367cd4c49d575478b2380f129dcd376a4e5e37939cStephen Hines}
377cd4c49d575478b2380f129dcd376a4e5e37939cStephen Hines
387cd4c49d575478b2380f129dcd376a4e5e37939cStephen Hinesbool FileWrapperOutput::Write(const uint8_t* buffer, size_t buffer_size) {
397cd4c49d575478b2380f129dcd376a4e5e37939cStephen Hines  if (buffer_size > 0) {
407cd4c49d575478b2380f129dcd376a4e5e37939cStephen Hines    return buffer_size == fwrite(buffer, 1, buffer_size, _file);
417cd4c49d575478b2380f129dcd376a4e5e37939cStephen Hines  } else {
427cd4c49d575478b2380f129dcd376a4e5e37939cStephen Hines    return true;
437cd4c49d575478b2380f129dcd376a4e5e37939cStephen Hines  }
447cd4c49d575478b2380f129dcd376a4e5e37939cStephen Hines}
45