# JseOsLib (Luaj API)
Date: 2015-04-29

## org.luaj.vm2.lib.jse
Class JseOsLib

    java.lang.Object
      org.luaj.vm2.Varargs
          org.luaj.vm2.LuaValue
              org.luaj.vm2.LuaFunction
                  org.luaj.vm2.lib.LibFunction
                      org.luaj.vm2.lib.TwoArgFunction
                          org.luaj.vm2.lib.OsLib
                              org.luaj.vm2.lib.jse.JseOsLib

    public class JseOsLib

extends OsLib

Subclass of `LibFunction` which implements the standard lua `os` library.

This contains more complete implementations of the following functions using features that are specific to JSE:

- `execute()`
- `remove()`
- `rename()`
- `tmpname()`

Because the nature of the `os` library is to encapsulate os-specific features, the behavior of these functions varies considerably from their counterparts in the C platform.

Typically, this library is included as part of a call to `JsePlatform.standardGlobals()`

     Globals globals = JsePlatform.standardGlobals();
     System.out.println( globals.get("os").get("time").call() );

For special cases where the smallest possible footprint is desired, a minimal set of libraries could be loaded directly via `LuaValue.load(LuaValue)` using code such as:

     Globals globals = new Globals();
     globals.load(new JseBaseLib());
     globals.load(new PackageLib());
     globals.load(new JseOsLib());
     System.out.println( globals.get("os").get("time").call() );

However, other libraries such as MathLib are not loaded in this case.

See Also:
  `LibFunction`, `OsLib`, `JsePlatform`, `JmePlatform`, Lua 5.2 OS Lib Reference

Field Summary
`static int` `EXEC_ERROR` return code indicating the execute() threw an unknown exception
`static int` `EXEC_INTERRUPTED` return code indicating the execute() was interrupted
`static int` `EXEC_IOEXCEPTION` return code indicating the execute() threw an I/O exception

Fields inherited from class org.luaj.vm2.lib.OsLib
`globals, TMP_PREFIX, TMP_SUFFIX`

Fields inherited from class org.luaj.vm2.lib.LibFunction
`name, opcode`

Fields inherited from class org.luaj.vm2.LuaFunction
`s_metatable`

Fields inherited from class org.luaj.vm2.LuaValue
`ADD, CALL, CONCAT, DIV, EMPTYSTRING, ENV, EQ, FALSE, INDEX, LE, LEN, LT, METATABLE, MINUSONE, MOD, MODE, MUL, NEWINDEX, NIL, NILS, NONE, NOVALS, ONE, POW, SUB, TBOOLEAN, TFUNCTION, TINT, TLIGHTUSERDATA, TNIL, TNONE, TNUMBER, TOSTRING, TRUE, TSTRING, TTABLE, TTHREAD, TUSERDATA, TVALUE, TYPE_NAMES, UNM, ZERO`

Constructor Summary
`JseOsLib()` public constructor

Method Summary
`protected Varargs` `execute(java.lang.String command)` This function is equivalent to the C function system.
`protected java.lang.String` `getenv(java.lang.String varname)` Returns the value of the process environment variable varname, or the System property value for varname, or null if the variable is not defined in either environment.
`protected void` `remove(java.lang.String filename)` Deletes the file or directory with the given name.
`protected void` `rename(java.lang.String oldname, java.lang.String newname)` Renames file or directory named oldname to newname.
`protected java.lang.String` `tmpname()` Returns a string with a file name that can be used for a temporary file.

Methods inherited from class org.luaj.vm2.lib.OsLib
`call, clock, date, difftime, exit, setlocale, time`

Methods inherited from class org.luaj.vm2.lib.TwoArgFunction
`call, call, call, invoke`

Methods inherited from class org.luaj.vm2.lib.LibFunction
`bind, bind, call, newupe, newupl, newupn, tojstring`

Methods inherited from class org.luaj.vm2.LuaFunction
`checkfunction, classnamestub, getmetatable, isfunction, name, optfunction, strvalue, type, typename`

Methods inherited from class org.luaj.vm2.LuaValue

`add, add, add, and, arg, arg1, argerror, argerror, aritherror, aritherror, arithmt, arithmtwith, assert_, buffer, call, callmt, checkboolean, checkclosure, checkdouble, checkglobals, checkint, checkinteger, checkjstring, checklong, checkmetatag, checknotnil, checknumber, checknumber, checkstring, checktable, checkthread, checkuserdata, checkuserdata, compareerror, compareerror, comparemt, concat, concat, concatmt, concatTo, concatTo, concatTo, div, div, div, divInto, eq_b, eq, eqmtcall, equals, error, get, get, get, gettable, gt_b, gt_b, gt_b, gt, gt, gt, gteq_b, gteq_b, gteq_b, gteq, gteq, gteq, illegal, inext, initupvalue1, invoke, invoke, invoke, invoke, invoke, invokemethod, invokemethod, invokemethod, invokemethod, invokemethod, invokemethod, isboolean, isclosure, isint, isinttype, islong, isnil, isnumber, isstring, istable, isthread, isuserdata, isuserdata, isvalidkey, len, lenerror, length, listOf, listOf, load, lt_b, lt_b, lt_b, lt, lt, lt, lteq_b, lteq_b, lteq_b, lteq, lteq, lteq, metatableOf, metatag, method, method, method, method, method, method, mod, mod, mod, modFrom, mul, mul, mul, narg, neg, neq_b, neq, next, not, onInvoke, optboolean, optclosure, optdouble, optint, optinteger, optjstring, optlong, optnumber, optstring, opttable, optthread, optuserdata, optuserdata, optvalue, or, pow, pow, pow, powWith, powWith, presize, raweq, raweq, raweq, raweq, raweq, rawget, rawget, rawget, rawlen, rawset, rawset, rawset, rawset, rawset, rawset, rawset, rawsetlist, set, set, set, set, set, set, set, setmetatable, settable, strcmp, strcmp, strongvalue, sub, sub, sub, subargs, subFrom, subFrom, tableOf, tableOf, tableOf, tableOf, tableOf, tableOf, tailcallOf, testfor_b, toboolean, tobyte, tochar, todouble, tofloat, toint, tolong, tonumber, toshort, tostring, toString, touserdata, touserdata, typerror, unimplemented, userdataOf, userdataOf, valueOf, valueOf, valueOf, valueOf, valueOf, valueOf, varargsOf, varargsOf, varargsOf, varargsOf, varargsOf, varargsOf`

Methods inherited from class org.luaj.vm2.Varargs

`argcheck, checkboolean, checkclosure, checkdouble, checkfunction, checkint, checkinteger, checkjstring, checklong, checknotnil, checknumber, checkstring, checktable, checkthread, checkuserdata, checkuserdata, checkvalue, eval, isfunction, isnil, isnoneornil, isnumber, isstring, istable, isTailcall, isthread, isuserdata, isvalue, optboolean, optclosure, optdouble, optfunction, optint, optinteger, optjstring, optlong, optnumber, optstring, opttable, optthread, optuserdata, optuserdata, optvalue, toboolean, tobyte, tochar, todouble, tofloat, toint, tojstring, tolong, toshort, touserdata, touserdata, type`

Methods inherited from class java.lang.Object
`clone, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Field Detail

### EXEC_IOEXCEPTION

    public static int EXEC_IOEXCEPTION

  return code indicating the execute() threw an I/O exception

### EXEC_INTERRUPTED

    public static int EXEC_INTERRUPTED

  return code indicating the execute() was interrupted

### EXEC_ERROR

    public static int EXEC_ERROR

  return code indicating the execute() threw an unknown exception

Constructor Detail

### JseOsLib

    public JseOsLib()

  public constructor

Method Detail

### getenv

    protected java.lang.String getenv(java.lang.String varname)

  Description copied from class: `OsLib`
  Returns the value of the process environment variable varname, or the System property value for varname, or null if the variable is not defined in either environment. The default implementation, which is used by the JmePlatform, only queryies System.getProperty(). The JsePlatform overrides this behavior and returns the environment variable value using System.getenv() if it exists, or the System property value if it does not. A SecurityException may be thrown if access is not allowed for 'varname'.

  Overrides:
    `getenv` in class `OsLib`
  Returns:
    String value, or null if not defined

### execute

    protected Varargs execute(java.lang.String command)

  Description copied from class: `OsLib`
  This function is equivalent to the C function system. It passes command to be executed by an operating system shell. It returns a status code, which is system-dependent. If command is absent, then it returns nonzero if a shell is available and zero otherwise.

  Overrides:
    `execute` in class `OsLib`
  Parameters:
    `command` - command to pass to the system

### remove

    protected void remove(java.lang.String filename)
                   throws java.io.IOException

  Description copied from class: `OsLib`
  Deletes the file or directory with the given name. Directories must be empty to be removed. If this function fails, it throws and IOException

  Overrides:
    `remove` in class `OsLib`
  Throws:
    `java.io.IOException` - if it fails

### rename

    protected void rename(java.lang.String oldname,
                          java.lang.String newname)
                   throws java.io.IOException

  Description copied from class: `OsLib`
  Renames file or directory named oldname to newname. If this function fails,it throws and IOException

  Overrides:
    `rename` in class `OsLib`
  Parameters:
    `oldname` - old file name
    `newname` - new file name
  Throws:
    `java.io.IOException` - if it fails

### tmpname

    protected java.lang.String tmpname()

  Description copied from class: `OsLib`
  Returns a string with a file name that can be used for a temporary file. The file must be explicitly opened before its use and explicitly removed when no longer needed. On some systems (POSIX), this function also creates a file with that name, to avoid security risks. (Someone else might create the file with wrong permissions in the time between getting the name and creating the file.) You still have to open the file to use it and to remove it (even if you do not use it).

  Overrides:
    `tmpname` in class `OsLib`
  Returns:
    String filename to use

Copyright © 2007-2015 Luaj.org. All Rights Reserved.