| /* | 
 |  * 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 |