misc/liblua/loslib.c
author Xeli
Sun, 22 Jan 2012 23:36:36 +0100
changeset 6589 2fa0a274a1e3
parent 2812 0a24853de796
child 12872 0a18aaa0d329
permissions -rw-r--r--
some tweaks to the build process, cmake now generates some vital files, fpc only compiles those files which have been changed since the last time, SDL still does not work
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2812
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
     1
/*
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
     2
** $Id: loslib.c,v 1.19.1.3 2008/01/18 16:38:18 roberto Exp $
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
     3
** Standard Operating System library
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
     4
** See Copyright Notice in lua.h
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
     5
*/
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
     6
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
     7
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
     8
#include <errno.h>
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
     9
#include <locale.h>
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    10
#include <stdlib.h>
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    11
#include <string.h>
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    12
#include <time.h>
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    13
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    14
#define loslib_c
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    15
#define LUA_LIB
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    16
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    17
#include "lua.h"
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    18
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    19
#include "lauxlib.h"
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    20
#include "lualib.h"
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    21
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    22
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    23
static int os_pushresult (lua_State *L, int i, const char *filename) {
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    24
  int en = errno;  /* calls to Lua API may change this value */
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    25
  if (i) {
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    26
    lua_pushboolean(L, 1);
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    27
    return 1;
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    28
  }
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    29
  else {
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    30
    lua_pushnil(L);
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    31
    lua_pushfstring(L, "%s: %s", filename, strerror(en));
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    32
    lua_pushinteger(L, en);
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    33
    return 3;
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    34
  }
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    35
}
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    36
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    37
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    38
static int os_execute (lua_State *L) {
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    39
  lua_pushinteger(L, system(luaL_optstring(L, 1, NULL)));
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    40
  return 1;
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    41
}
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    42
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    43
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    44
static int os_remove (lua_State *L) {
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    45
  const char *filename = luaL_checkstring(L, 1);
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    46
  return os_pushresult(L, remove(filename) == 0, filename);
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    47
}
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    48
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    49
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    50
static int os_rename (lua_State *L) {
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    51
  const char *fromname = luaL_checkstring(L, 1);
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    52
  const char *toname = luaL_checkstring(L, 2);
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    53
  return os_pushresult(L, rename(fromname, toname) == 0, fromname);
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    54
}
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    55
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    56
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    57
static int os_tmpname (lua_State *L) {
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    58
  char buff[LUA_TMPNAMBUFSIZE];
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    59
  int err;
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    60
  lua_tmpnam(buff, err);
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    61
  if (err)
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    62
    return luaL_error(L, "unable to generate a unique filename");
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    63
  lua_pushstring(L, buff);
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    64
  return 1;
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    65
}
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    66
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    67
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    68
static int os_getenv (lua_State *L) {
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    69
  lua_pushstring(L, getenv(luaL_checkstring(L, 1)));  /* if NULL push nil */
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    70
  return 1;
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    71
}
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    72
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    73
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    74
static int os_clock (lua_State *L) {
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    75
  lua_pushnumber(L, ((lua_Number)clock())/(lua_Number)CLOCKS_PER_SEC);
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    76
  return 1;
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    77
}
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    78
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    79
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    80
/*
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    81
** {======================================================
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    82
** Time/Date operations
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    83
** { year=%Y, month=%m, day=%d, hour=%H, min=%M, sec=%S,
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    84
**   wday=%w+1, yday=%j, isdst=? }
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    85
** =======================================================
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    86
*/
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    87
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    88
static void setfield (lua_State *L, const char *key, int value) {
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    89
  lua_pushinteger(L, value);
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    90
  lua_setfield(L, -2, key);
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    91
}
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    92
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    93
static void setboolfield (lua_State *L, const char *key, int value) {
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    94
  if (value < 0)  /* undefined? */
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    95
    return;  /* does not set field */
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    96
  lua_pushboolean(L, value);
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    97
  lua_setfield(L, -2, key);
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    98
}
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
    99
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   100
static int getboolfield (lua_State *L, const char *key) {
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   101
  int res;
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   102
  lua_getfield(L, -1, key);
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   103
  res = lua_isnil(L, -1) ? -1 : lua_toboolean(L, -1);
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   104
  lua_pop(L, 1);
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   105
  return res;
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   106
}
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   107
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   108
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   109
static int getfield (lua_State *L, const char *key, int d) {
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   110
  int res;
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   111
  lua_getfield(L, -1, key);
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   112
  if (lua_isnumber(L, -1))
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   113
    res = (int)lua_tointeger(L, -1);
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   114
  else {
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   115
    if (d < 0)
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   116
      return luaL_error(L, "field " LUA_QS " missing in date table", key);
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   117
    res = d;
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   118
  }
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   119
  lua_pop(L, 1);
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   120
  return res;
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   121
}
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   122
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   123
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   124
static int os_date (lua_State *L) {
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   125
  const char *s = luaL_optstring(L, 1, "%c");
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   126
  time_t t = luaL_opt(L, (time_t)luaL_checknumber, 2, time(NULL));
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   127
  struct tm *stm;
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   128
  if (*s == '!') {  /* UTC? */
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   129
    stm = gmtime(&t);
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   130
    s++;  /* skip `!' */
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   131
  }
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   132
  else
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   133
    stm = localtime(&t);
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   134
  if (stm == NULL)  /* invalid date? */
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   135
    lua_pushnil(L);
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   136
  else if (strcmp(s, "*t") == 0) {
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   137
    lua_createtable(L, 0, 9);  /* 9 = number of fields */
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   138
    setfield(L, "sec", stm->tm_sec);
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   139
    setfield(L, "min", stm->tm_min);
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   140
    setfield(L, "hour", stm->tm_hour);
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   141
    setfield(L, "day", stm->tm_mday);
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   142
    setfield(L, "month", stm->tm_mon+1);
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   143
    setfield(L, "year", stm->tm_year+1900);
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   144
    setfield(L, "wday", stm->tm_wday+1);
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   145
    setfield(L, "yday", stm->tm_yday+1);
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   146
    setboolfield(L, "isdst", stm->tm_isdst);
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   147
  }
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   148
  else {
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   149
    char cc[3];
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   150
    luaL_Buffer b;
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   151
    cc[0] = '%'; cc[2] = '\0';
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   152
    luaL_buffinit(L, &b);
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   153
    for (; *s; s++) {
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   154
      if (*s != '%' || *(s + 1) == '\0')  /* no conversion specifier? */
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   155
        luaL_addchar(&b, *s);
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   156
      else {
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   157
        size_t reslen;
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   158
        char buff[200];  /* should be big enough for any conversion result */
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   159
        cc[1] = *(++s);
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   160
        reslen = strftime(buff, sizeof(buff), cc, stm);
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   161
        luaL_addlstring(&b, buff, reslen);
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   162
      }
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   163
    }
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   164
    luaL_pushresult(&b);
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   165
  }
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   166
  return 1;
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   167
}
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   168
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   169
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   170
static int os_time (lua_State *L) {
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   171
  time_t t;
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   172
  if (lua_isnoneornil(L, 1))  /* called without args? */
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   173
    t = time(NULL);  /* get current time */
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   174
  else {
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   175
    struct tm ts;
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   176
    luaL_checktype(L, 1, LUA_TTABLE);
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   177
    lua_settop(L, 1);  /* make sure table is at the top */
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   178
    ts.tm_sec = getfield(L, "sec", 0);
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   179
    ts.tm_min = getfield(L, "min", 0);
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   180
    ts.tm_hour = getfield(L, "hour", 12);
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   181
    ts.tm_mday = getfield(L, "day", -1);
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   182
    ts.tm_mon = getfield(L, "month", -1) - 1;
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   183
    ts.tm_year = getfield(L, "year", -1) - 1900;
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   184
    ts.tm_isdst = getboolfield(L, "isdst");
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   185
    t = mktime(&ts);
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   186
  }
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   187
  if (t == (time_t)(-1))
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   188
    lua_pushnil(L);
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   189
  else
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   190
    lua_pushnumber(L, (lua_Number)t);
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   191
  return 1;
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   192
}
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   193
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   194
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   195
static int os_difftime (lua_State *L) {
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   196
  lua_pushnumber(L, difftime((time_t)(luaL_checknumber(L, 1)),
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   197
                             (time_t)(luaL_optnumber(L, 2, 0))));
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   198
  return 1;
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   199
}
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   200
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   201
/* }====================================================== */
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   202
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   203
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   204
static int os_setlocale (lua_State *L) {
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   205
  static const int cat[] = {LC_ALL, LC_COLLATE, LC_CTYPE, LC_MONETARY,
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   206
                      LC_NUMERIC, LC_TIME};
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   207
  static const char *const catnames[] = {"all", "collate", "ctype", "monetary",
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   208
     "numeric", "time", NULL};
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   209
  const char *l = luaL_optstring(L, 1, NULL);
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   210
  int op = luaL_checkoption(L, 2, "all", catnames);
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   211
  lua_pushstring(L, setlocale(cat[op], l));
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   212
  return 1;
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   213
}
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   214
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   215
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   216
static int os_exit (lua_State *L) {
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   217
  exit(luaL_optint(L, 1, EXIT_SUCCESS));
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   218
}
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   219
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   220
static const luaL_Reg syslib[] = {
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   221
  {"clock",     os_clock},
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   222
  {"date",      os_date},
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   223
  {"difftime",  os_difftime},
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   224
  {"execute",   os_execute},
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   225
  {"exit",      os_exit},
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   226
  {"getenv",    os_getenv},
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   227
  {"remove",    os_remove},
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   228
  {"rename",    os_rename},
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   229
  {"setlocale", os_setlocale},
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   230
  {"time",      os_time},
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   231
  {"tmpname",   os_tmpname},
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   232
  {NULL, NULL}
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   233
};
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   234
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   235
/* }====================================================== */
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   236
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   237
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   238
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   239
LUALIB_API int luaopen_os (lua_State *L) {
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   240
  luaL_register(L, LUA_OSLIBNAME, syslib);
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   241
  return 1;
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   242
}
0a24853de796 add liblua to sources for macosx
koda
parents:
diff changeset
   243