*add_verb add_verb(action,func) string action,func; add_verb adds an verb to the list of verbs on the object executing the system call. If add_verb is called on the prototype, all the prototype's children will have the verb defined for them. *add_xverb add_xverb(action,func) string action,func; add_xverb adds an xverb to the list of verbs on the object executing the system call. If add_xverb is called on the prototype, all the prototype's children will have the xverb defined for them. xverbs differ from regular verbs in that no space has to appear after the xverb's name in the player's command for the xverb to be recognized by the parser. *alarm alarm(delay,func) int delay; string func; alarm will cause the function func to be executed on the object calling alarm() in delay seconds from the current time. *asc asc(c) string c; Returns the ASCII equivalent of the first character of c. *atoi atoi(s) string s; Returns the integer represented by i. *atoo atoo(s) string s; Returns the object represented by s; s is either a path name, with the .c truncated, an integer in the form "#%d", where %d is the integer, or the concatenation of the two forms. *call_other call_other(obj,func,...) object obj; string func; call_other calls the function func in the object obj, with an optional list of variables to use as arguments to func. *caller_object caller_object() caller_object returns the object which called the function executing the system call. *cat cat(path) string path; Like the UNIX cat, it types a file to the screen. *chmod chmod(path,flags) string path; int flags; Changes the permissions on path to flags. The flags are the same as used in unhide(). *chown chown(path,owner) string path; object owner; Changes a file's owner to owner. *chr chr(c) int c; Returns a string consisting of the ASCII equivalent of c. *clone_object clone_object(obj|path) object obj; string path; clone_object returns an object pointer to a new instance of object obj, or a new instance of the object referred to by the string path. *command command(action) string action; Causes the command action to be placed on the object's incoming command queue. *compile_object compile_object(path) string path; Compiles the object named by path; path should not have the ".c" stuck on it. *connected connected(obj) object obj; Returns zero if obj is not connected to the net, non-zero if its. *contents contents(obj) object obj; Returns the first object in the contents of obj. *cp cp(path,newpath) string path,newpath; Copies file path to file newpath. *destruct destruct(obj) object obj; destruct destroys the object obj and sets all references to it in other objects' data spaces to 0. If obj is a prototype, all children of obj are destroyed, also. NOTE: only an object set PRIV can destroy any object other than itself. *disconnect_device disconnect_device() This disconnects the device connected to the object which executes it. *downcase downcase(s) string s; Returns the string s with all uppercase letters changed to lowercase. *edit edit(path) string path; Invokes the editor on the file named by path. *ferase ferase(pathname) string pathname; Erases the contents of the file pathname. *fread fread(pathname,pos) string pathname; int pos; Returns a string read from file pathname beginning at position pos. If pos is a variable, pos will be updated to reflect the new position. *fwrite fwrite(pathname,s) string pathname,s; Writes string s to the end of file pathname. *get_devconn get_devconn(obj) object obj; Returns a string containing the network address of obj. *hide hide(string path) This causes a file to be removed from the filesystem - it does NOT cause the file to be actually deleted, it just cannot be referenced from within CI. All files that are created outside of CI will be initially hidden, and you must use unhide() to bring them into CI's filesystem. NOTE: an object must be PRIV to use hide() *in_editor in_editor(obj) object obj; Returns zero if obj is not using the on-line editor, non-zero if it is. *instr instr(s,startpos,search) string s,search; int startpos; Returns the position of the first occurrence of string search within string s, beginning its pattern-matching at position startpos of s. *interactive interactive(obj) object obj; Returns zero if the object is not INTERACTIVE, non-zero if it is. *is_legal is_legal(s) string s; Returns non-zero if s is a legal filename, zero otherwise. *iterate iterate(first_obj,except1,except2,func,...) object first_obj,except1,except2; string func; This system call calls the function func on first_obj and every object in the next_object() linked list associated with it. It does not, however, call the function func on the objects except1 or except2. except1 and except2 may be null objects. *itoa itoa(val) int val; Returns a string representing val. *itoo itoo(i) int i; Returns the object pointer equivalent to integer i. *leftstr leftstr(s,len) string s; int len; Returns a string consisting of the leftmost len characters of s. *location location(obj) object obj; location returns an object pointer pointing to the location of obj. *ls ls(path) string path; Lists the directory named by path. *midstr midstr(s,pos,len) string s; int pos; int len; Returns a portion of s beginning at position pos with a length len. NOTE: indexing in CI-C for strings begins with 1, not 0. *mkdir mkdir(path) string path; Makes a directory named path. *mktime mktime(tm) int tm; Returns a string equivalent to the calendar time tm. *move_object move_object(item,dest) object item,dest; Moves item to dest. *mv mv(path,newpath) string path,newpath; Moves the file path to the file newpath. *next_child next_child(obj) object obj; next_child will return the first child if obj is a prototype, or the next child in line if obj is not a prototype. *next_object next_object(obj) object obj; Returns the next object in line after obj, in obj's location. *next_proto next_proto(obj) object obj; CI maintains a list of prototype objects; next_proto returns the next prototype in line. To get the first prototype, use itoo(0); this will return the object pointer to /boot#0. *next_who next_who(obj) object obj; Gets the next object connected over the net after obj in the server's list of net-connected objects. If obj is null, it will return the first object in the server's list. It will return null if obj is the last object in the server's list. *otoa otoa(obj) object obj; Returns a string representing object obj. *otoi otoi(o) object o; Returns the integer equivalent of the object pointer 0. *parent parent(obj) object obj; parent returns the object which is the prototype of obj. *priv priv(obj) object obj; Returns zero if obj is not PRIV, non-zero if it is. *prototype prototype(o) object o; Returns non-zero if o is a prototype, zero if not. *random random(limit) int limit; Returns an integer from 0 to limit-1. *reconnect_device reconnect_device(obj) object obj; This function calls moves a network connection to the object obj from the current object. It will fail if there is a already a connection on obj. NOTE: must be PRIV to use this system call *remove_alarm remove_alarm([func]) string func; remove_alarm will remove the function func from the object's alarm queue. If remove_alarm is called with no arguments, it will remove all alarms from the object's alarm queue. *remove_verb remove_verb(action) string action; Removes the verb action. *rightstr rightstr(s,len) string s; int len; Returns a string consisting of the rightmost len characters of s. *rm rm(path) string path; Removes the file named by path. *rmdir rmdir(path) string path; Removes the directory named by path; it must be an empty directory. *send_device send_device(msg) string msg; Sends msg over the network to the person connected to the device which executes this function. *set_interactive set_interactive() Sets the object calling it to INTERACTIVE. An INTERACTIVE object's verbs cannot be activated by anyone other than that object. *set_priv set_priv(obj) object obj; Sets the PRIV flag on an object. NOTE: an object must be set PRIV to set another object PRIV. *sprintf sprintf() It's not implemented. *sscanf sscanf() This system call is unimplemented, and might never be implemented. In the meantime, use the following calls: midstr(),strlen(),leftstr(),rightstr(),subst(),instr() NOTE: indexing of strings in CI-C begins at 1, not 0 like in regular C. *strlen strlen(s) string s; Returns the length of string s. *subst subst(s,pos,len,s2) string s,s2; int pos,len; Returns a string that is identical to s, except that len characters of s have been removed beginning at position pos and replaced with s2. *sysctl sysctl(oper, ...) int oper; The following operations are supported by sysctl: 0 - save. saves the db, no further arguments required. 1 - shutdown. shutdowns the program, no further arguments required. 2 - panic. shutdowns the program, no further arguments required. All three of these functions require the caller to be PRIV. *syslog syslog(msg) string msg; Writes msg to the system log file. *this_object this_object() Returns an object pointer to the object currently executing the function it occurs in. *this_player this_player() Returns the object pointer to the object that initiated the current command, or 0 if the current thread of execution was initiated by something other than a command. *time time() Returns the current calendar time. *typeof typeof(x) var x; Returns the variable type of x - 0 for integer, 1 for string, and 2 for object pointer. *unhide unhide(path,owner,flags) string path; object owner; int flags; This unhides a file, and sets the owner & flags on it. Flags you can set are: READ_OK 1 WRITE_OK 2 DIRECTORY 4 NOTE: an object must be PRIV to use unhide() *upcase upcase(s) string s; Returns the string s with all lowercase letters changed to uppercase.