|  | /* | 
|  | * Copyright 2013 Google Inc. | 
|  | * | 
|  | * Use of this source code is governed by a BSD-style license that can be | 
|  | * found in the LICENSE file. | 
|  | */ | 
|  |  | 
|  | #include "SkLua.h" | 
|  | #include "SkGraphics.h" | 
|  | #include "SkStream.h" | 
|  | #include "SkData.h" | 
|  | #include "SkOSFile.h" | 
|  |  | 
|  | extern "C" { | 
|  | #include "lua.h" | 
|  | #include "lualib.h" | 
|  | #include "lauxlib.h" | 
|  | } | 
|  |  | 
|  | static SkData* read_into_data(const char file[]) { | 
|  | SkAutoTUnref<SkStream> stream(SkStream::NewFromFile(file)); | 
|  | if (!stream.get()) { | 
|  | return SkData::NewEmpty(); | 
|  | } | 
|  | size_t len = stream->getLength(); | 
|  | void* buffer = sk_malloc_throw(len); | 
|  | stream->read(buffer, len); | 
|  | return SkData::NewFromMalloc(buffer, len); | 
|  | } | 
|  |  | 
|  | int tool_main(int argc, char** argv); | 
|  | int tool_main(int argc, char** argv) { | 
|  | SkAutoGraphics ag; | 
|  | SkLua L; | 
|  |  | 
|  | for (int i = 1; i < argc; ++i) { | 
|  | SkData* data = NULL; | 
|  | const void* ptr; | 
|  | size_t len; | 
|  |  | 
|  | if (!strcmp(argv[i], "--lua") && i < argc-1) { | 
|  | ptr = argv[i + 1]; | 
|  | len = strlen(argv[i + 1]); | 
|  | i += 1; | 
|  | } else { | 
|  | data = read_into_data(argv[i]); | 
|  | ptr = data->data(); | 
|  | len = data->size(); | 
|  | } | 
|  | if (!L.runCode(ptr, len)) { | 
|  | SkDebugf("failed to load %s\n", argv[i]); | 
|  | exit(-1); | 
|  | } | 
|  | SkSafeUnref(data); | 
|  | } | 
|  | return 0; | 
|  | } | 
|  |  | 
|  | #if !defined SK_BUILD_FOR_IOS | 
|  | int main(int argc, char * const argv[]) { | 
|  | return tool_main(argc, (char**) argv); | 
|  | } | 
|  | #endif |