eab73b3dee
Rocklua was using the full fscanf implementation to simply read %ld for the file:read("*n") function wasting 1k on unneeded/unused functionality Instead, I've implemented a filetol function to duplicate it without the extra overhead using strtol which as an added bonus ERANGE errors now resolve to LONG_MIN and LONGMAX instead of integer overflow filetol() reads long int from an open file, skips preceding whitespaces returns -1 if error, 1 on success. *num set to LONG_MAX or LONG_MIN on overflow. If number of digits is > than LUAI_MAXNUMBER2STR filepointer will continue till the next non digit but buffer will stop being filled with characters. Preceding zero is ignored. Change-Id: Ia42d0f73c63a894625bca4581e9b7e1cc7387fd2
53 lines
1.5 KiB
C
53 lines
1.5 KiB
C
/***************************************************************************
|
|
* __________ __ ___.
|
|
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
|
|
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
|
|
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
|
|
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
|
|
* \/ \/ \/ \/ \/
|
|
* $Id$
|
|
*
|
|
* Copyright (C) 2008 Dan Everton (safetydan)
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License
|
|
* as published by the Free Software Foundation; either version 2
|
|
* of the License, or (at your option) any later version.
|
|
*
|
|
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
|
* KIND, either express or implied.
|
|
*
|
|
****************************************************************************/
|
|
|
|
#ifndef _ROCKLIB_H_
|
|
#define _ROCKLIB_H_
|
|
|
|
#define LUA_ROCKLIBNAME "rb"
|
|
|
|
#ifndef ERR_IDX_RANGE
|
|
#define ERR_IDX_RANGE "index out of range"
|
|
#endif
|
|
|
|
#ifndef ERR_DATA_OVF
|
|
#define ERR_DATA_OVF "data overflow"
|
|
#endif
|
|
|
|
#define RB_CONSTANT(x) {#x, x}
|
|
#define RB_STRING_CONSTANT(x) RB_CONSTANT(x)
|
|
|
|
struct lua_int_reg {
|
|
char const* name;
|
|
const int value;
|
|
};
|
|
|
|
struct lua_str_reg {
|
|
char const* name;
|
|
char const* value;
|
|
};
|
|
|
|
LUALIB_API int (luaopen_rock) (lua_State *L);
|
|
int get_current_path(lua_State *L, int level);
|
|
int filetol(int fd, long *num);
|
|
|
|
#endif /* _ROCKLIB_H_ */
|
|
|