Index: native_client_sdk/src/examples/hello_nacl_mounts/handlers.c |
diff --git a/native_client_sdk/src/examples/hello_nacl_mounts/handlers.c b/native_client_sdk/src/examples/hello_nacl_mounts/handlers.c |
deleted file mode 100644 |
index 1d95f527350ea7a9f594d7e864209ba7ee238c46..0000000000000000000000000000000000000000 |
--- a/native_client_sdk/src/examples/hello_nacl_mounts/handlers.c |
+++ /dev/null |
@@ -1,322 +0,0 @@ |
-/* Copyright (c) 2012 The Chromium Authors. All rights reserved. |
- * Use of this source code is governed by a BSD-style license that can be |
- * found in the LICENSE file. |
- */ |
- |
-#include "handlers.h" |
- |
-#include <assert.h> |
-#include <stdio.h> |
-#include <stdlib.h> |
-#include <string.h> |
- |
-#include "hello_nacl_mounts.h" |
- |
-#define MAX_OPEN_FILES 10 |
- |
-/** |
- * A mapping from int -> FILE*, so the JavaScript messages can refer to an open |
- * File. */ |
-static FILE* g_OpenFiles[MAX_OPEN_FILES]; |
- |
- |
-/** |
- * Add the file to the g_OpenFiles map. |
- * @param[in] file The file to add to g_OpenFiles. |
- * @return int The index of the FILE in g_OpenFiles, or -1 if there are too many |
- * open files. */ |
-static int AddFileToMap(FILE* file) { |
- int i; |
- assert(file != NULL); |
- for (i = 0; i < MAX_OPEN_FILES; ++i) { |
- if (g_OpenFiles[i] == NULL) { |
- g_OpenFiles[i] = file; |
- return i; |
- } |
- } |
- |
- return -1; |
-} |
- |
-/** |
- * Remove the file from the g_OpenFiles map. |
- * @param[in] i The index of the file handle to remove. */ |
-static void RemoveFileFromMap(int i) { |
- assert(i >= 0 && i < MAX_OPEN_FILES); |
- g_OpenFiles[i] = NULL; |
-} |
- |
-/** |
- * Get a file handle from the g_OpenFiles map. |
- * @param[in] i The index of the file handle to get. |
- * @return the FILE*, or NULL of there is no open file with that handle. |
- */ |
-static FILE* GetFileFromMap(int i) { |
- assert(i >= 0 && i < MAX_OPEN_FILES); |
- return g_OpenFiles[i]; |
-} |
- |
-/** |
- * Get a file, given a string containing the index. |
- * @param[in] s The string containing the file index. |
- * @param[out] file_index The file index of this file. |
- * @return The FILE* for this file, or NULL if the index is invalid. */ |
-static FILE* GetFileFromIndexString(const char* s, int* file_index) { |
- char* endptr; |
- int result = strtol(s, &endptr, 10); |
- if (endptr != s + strlen(s)) { |
- /* Garbage at the end of the number...? */ |
- return NULL; |
- } |
- |
- if (file_index) |
- *file_index = result; |
- |
- return GetFileFromMap(result); |
-} |
- |
- |
-/** |
- * Handle a call to fopen() made by JavaScript. |
- * |
- * fopen expects 2 parameters: |
- * 0: the path of the file to open |
- * 1: the mode string |
- * on success, fopen returns a result in |output| separated by \1: |
- * 0: "fopen" |
- * 1: the filename opened |
- * 2: the file index |
- * on failure, fopen returns an error string in |output|. |
- * |
- * @param[in] num_params The number of params in |params|. |
- * @param[in] params An array of strings, parameters to this function. |
- * @param[out] output A string to write informational function output to. |
- * @return An errorcode; 0 means success, anything else is a failure. */ |
-int HandleFopen(int num_params, char** params, char** output) { |
- FILE* file; |
- int file_index; |
- const char* filename; |
- const char* mode; |
- |
- if (num_params != 2) { |
- *output = PrintfToNewString("Error: fopen takes 2 parameters."); |
- return 1; |
- } |
- |
- filename = params[0]; |
- mode = params[1]; |
- |
- file = fopen(filename, mode); |
- if (!file) { |
- *output = PrintfToNewString("Error: fopen returned a NULL FILE*."); |
- return 2; |
- } |
- |
- file_index = AddFileToMap(file); |
- if (file_index == -1) { |
- *output = PrintfToNewString( |
- "Error: Example only allows %d open file handles.", MAX_OPEN_FILES); |
- return 3; |
- } |
- |
- *output = PrintfToNewString("fopen\1%s\1%d", filename, file_index); |
- return 0; |
-} |
- |
-/** |
- * Handle a call to fwrite() made by JavaScript. |
- * |
- * fwrite expects 2 parameters: |
- * 0: The index of the file (which is mapped to a FILE*) |
- * 1: A string to write to the file |
- * on success, fwrite returns a result in |output| separated by \1: |
- * 0: "fwrite" |
- * 1: the file index |
- * 2: the number of bytes written |
- * on failure, fwrite returns an error string in |output|. |
- * |
- * @param[in] num_params The number of params in |params|. |
- * @param[in] params An array of strings, parameters to this function. |
- * @param[out] output A string to write informational function output to. |
- * @return An errorcode; 0 means success, anything else is a failure. */ |
-int HandleFwrite(int num_params, char** params, char** output) { |
- FILE* file; |
- const char* file_index_string; |
- const char* data; |
- size_t data_len; |
- size_t bytes_written; |
- |
- if (num_params != 2) { |
- *output = PrintfToNewString("Error: fwrite takes 2 parameters."); |
- return 1; |
- } |
- |
- file_index_string = params[0]; |
- file = GetFileFromIndexString(file_index_string, NULL); |
- data = params[1]; |
- data_len = strlen(data); |
- |
- if (!file) { |
- *output = PrintfToNewString("Error: Unknown file handle %s.", |
- file_index_string); |
- return 2; |
- } |
- |
- bytes_written = fwrite(data, 1, data_len, file); |
- |
- *output = PrintfToNewString("fwrite\1%s\1%d", file_index_string, |
- bytes_written); |
- return 0; |
-} |
- |
-/** |
- * Handle a call to fread() made by JavaScript. |
- * |
- * fread expects 2 parameters: |
- * 0: The index of the file (which is mapped to a FILE*) |
- * 1: The number of bytes to read from the file. |
- * on success, fread returns a result in |output| separated by \1: |
- * 0: "fread" |
- * 1: the file index |
- * 2: the data read from the file |
- * on failure, fread returns an error string in |output|. |
- * |
- * @param[in] num_params The number of params in |params|. |
- * @param[in] params An array of strings, parameters to this function. |
- * @param[out] output A string to write informational function output to. |
- * @return An errorcode; 0 means success, anything else is a failure. */ |
-int HandleFread(int num_params, char** params, char** output) { |
- FILE* file; |
- const char* file_index_string; |
- char* buffer; |
- size_t data_len; |
- size_t bytes_read; |
- |
- if (num_params != 2) { |
- *output = PrintfToNewString("Error: fread takes 2 parameters."); |
- return 1; |
- } |
- |
- file_index_string = params[0]; |
- file = GetFileFromIndexString(file_index_string, NULL); |
- data_len = strtol(params[1], NULL, 10); |
- |
- if (!file) { |
- *output = PrintfToNewString("Error: Unknown file handle %s.", |
- file_index_string); |
- return 2; |
- } |
- |
- buffer = (char*)malloc(data_len + 1); |
- bytes_read = fread(buffer, 1, data_len, file); |
- buffer[bytes_read] = 0; |
- |
- *output = PrintfToNewString("fread\1%s\1%s", file_index_string, buffer); |
- free(buffer); |
- return 0; |
-} |
- |
-/** |
- * Handle a call to fseek() made by JavaScript. |
- * |
- * fseek expects 3 parameters: |
- * 0: The index of the file (which is mapped to a FILE*) |
- * 1: The offset to seek to |
- * 2: An integer representing the whence parameter of standard fseek. |
- * whence = 0: seek from the beginning of the file |
- * whence = 1: seek from the current file position |
- * whence = 2: seek from the end of the file |
- * on success, fseek returns a result in |output| separated by \1: |
- * 0: "fseek" |
- * 1: the file index |
- * 2: The new file position |
- * on failure, fseek returns an error string in |output|. |
- * |
- * @param[in] num_params The number of params in |params|. |
- * @param[in] params An array of strings, parameters to this function. |
- * @param[out] output A string to write informational function output to. |
- * @return An errorcode; 0 means success, anything else is a failure. */ |
-int HandleFseek(int num_params, char** params, char** output) { |
- FILE* file; |
- const char* file_index_string; |
- long offset; |
- int whence; |
- int result; |
- |
- if (num_params != 3) { |
- *output = PrintfToNewString("Error: fseek takes 3 parameters."); |
- return 1; |
- } |
- |
- file_index_string = params[0]; |
- file = GetFileFromIndexString(file_index_string, NULL); |
- offset = strtol(params[1], NULL, 10); |
- whence = strtol(params[2], NULL, 10); |
- |
- if (!file) { |
- *output = PrintfToNewString("Error: Unknown file handle %s.", |
- file_index_string); |
- return 2; |
- } |
- |
- result = fseek(file, offset, whence); |
- if (result) { |
- *output = PrintfToNewString("Error: fseek returned error %d.", result); |
- return 3; |
- } |
- |
- offset = ftell(file); |
- if (offset < 0) { |
- *output = PrintfToNewString( |
- "Error: fseek succeeded, but ftell returned error %d.", offset); |
- return 4; |
- } |
- |
- *output = PrintfToNewString("fseek\1%s\1%d", file_index_string, offset); |
- return 0; |
-} |
- |
-/** |
- * Handle a call to fclose() made by JavaScript. |
- * |
- * fclose expects 1 parameter: |
- * 0: The index of the file (which is mapped to a FILE*) |
- * on success, fclose returns a result in |output| separated by \1: |
- * 0: "fclose" |
- * 1: the file index |
- * on failure, fclose returns an error string in |output|. |
- * |
- * @param[in] num_params The number of params in |params|. |
- * @param[in] params An array of strings, parameters to this function. |
- * @param[out] output A string to write informational function output to. |
- * @return An errorcode; 0 means success, anything else is a failure. */ |
-int HandleFclose(int num_params, char** params, char** output) { |
- FILE* file; |
- int file_index; |
- const char* file_index_string; |
- int result; |
- |
- if (num_params != 1) { |
- *output = PrintfToNewString("Error: fclose takes 1 parameters."); |
- return 1; |
- } |
- |
- file_index_string = params[0]; |
- file = GetFileFromIndexString(file_index_string, &file_index); |
- if (!file) { |
- *output = PrintfToNewString("Error: Unknown file handle %s.", |
- file_index_string); |
- return 2; |
- } |
- |
- result = fclose(file); |
- if (result) { |
- *output = PrintfToNewString("Error: fclose returned error %d.", result); |
- return 3; |
- } |
- |
- RemoveFileFromMap(file_index); |
- |
- *output = PrintfToNewString("fclose\1%s", file_index_string); |
- return 0; |
-} |