#include "config.h"
#include "object.h"
#include "instr.h"
#include "construct.h"
#include "compile.h"
#include "interp.h"
#include "operproto.h"
#include "interface.h"
#include "dbhandle.h"
#include "globals.h"
int s_get_devconn(struct object *caller, struct object *obj, struct object
*player, struct var_stack **rts) {
struct var tmp;
char *buf;
if (pop(&tmp,rts,obj)) return 1;
if (tmp.type!=NUM_ARGS) {
clear_var(&tmp);
return 1;
}
if (tmp.value.num!=1) return 1;
if (pop(&tmp,rts,obj)) return 1;
if (tmp.type!=OBJECT) {
clear_var(&tmp);
return 1;
}
buf=get_devconn(tmp.value.objptr);
if (!buf) {
tmp.type=INTEGER;
tmp.value.integer=0;
} else {
tmp.type=STRING;
tmp.value.string=buf;
}
push(&tmp,rts);
return 0;
}
int s_send_device(struct object *caller, struct object *obj, struct object
*player, struct var_stack **rts) {
struct var tmp;
if (pop(&tmp,rts,obj)) return 1;
if (tmp.type!=NUM_ARGS) {
clear_var(&tmp);
return 1;
}
if (tmp.value.num!=1) return 1;
if (pop(&tmp,rts,obj)) return 1;
if (tmp.type==INTEGER && tmp.value.integer==0) {
push(&tmp,rts);
return 0;
}
if (tmp.type!=STRING) {
clear_var(&tmp);
return 1;
}
send_device(obj,tmp.value.string);
clear_var(&tmp);
tmp.type=INTEGER;
tmp.value.integer=0;
push(&tmp,rts);
return 0;
}
int s_reconnect_device(struct object *caller, struct object *obj, struct object
*player, struct var_stack **rts) {
struct var tmp;
int result;
if (pop(&tmp,rts,obj)) return 1;
if (tmp.type!=NUM_ARGS) {
clear_var(&tmp);
return 1;
}
if (tmp.value.num!=1) return 1;
if (pop(&tmp,rts,obj)) return 1;
if (tmp.type!=OBJECT) {
clear_var(&tmp);
return 1;
}
if (!(obj->flags & PRIV)) {
tmp.type=INTEGER;
tmp.value.integer=1;
push(&tmp,rts);
return 0;
}
result=reconnect_device(obj,tmp.value.objptr);
tmp.type=INTEGER;
tmp.value.integer=result;
push(&tmp,rts);
return 0;
}
int s_disconnect_device(struct object *caller, struct object *obj,
struct object *player, struct var_stack **rts) {
struct var tmp;
if (pop(&tmp,rts,obj)) return 1;
if (tmp.type!=NUM_ARGS) {
clear_var(&tmp);
return 1;
}
if (tmp.value.num!=0) return 1;
disconnect_device(obj);
tmp.type=INTEGER;
tmp.value.integer=0;
push(&tmp,rts);
return 0;
}