// Copyright 2012 Google Inc. All Rights Reserved. // // Use of this source code is governed by a BSD-style license // that can be found in the COPYING file in the root of the source // tree. An additional intellectual property rights grant can be found // in the file PATENTS. All contributing project authors may // be found in the AUTHORS file in the root of the source tree. // ----------------------------------------------------------------------------- // // Utility functions used by the example programs. // #include "./example_util.h" #include #include // ----------------------------------------------------------------------------- // File I/O int ExUtilReadFile(const char* const file_name, const uint8_t** data, size_t* data_size) { int ok; void* file_data; size_t file_size; FILE* in; if (file_name == NULL || data == NULL || data_size == NULL) return 0; *data = NULL; *data_size = 0; in = fopen(file_name, "rb"); if (in == NULL) { fprintf(stderr, "cannot open input file '%s'\n", file_name); return 0; } fseek(in, 0, SEEK_END); file_size = ftell(in); fseek(in, 0, SEEK_SET); file_data = malloc(file_size); if (file_data == NULL) return 0; ok = (fread(file_data, file_size, 1, in) == 1); fclose(in); if (!ok) { fprintf(stderr, "Could not read %d bytes of data from file %s\n", (int)file_size, file_name); free(file_data); return 0; } *data = (uint8_t*)file_data; *data_size = file_size; return 1; } int ExUtilWriteFile(const char* const file_name, const uint8_t* data, size_t data_size) { int ok; FILE* out; if (file_name == NULL || data == NULL) { return 0; } out = fopen(file_name, "wb"); if (out == NULL) { fprintf(stderr, "Error! Cannot open output file '%s'\n", file_name); return 0; } ok = (fwrite(data, data_size, 1, out) == 1); fclose(out); return ok; }