drive labels
This commit is contained in:
@@ -2800,6 +2800,27 @@ nn_Exit nn_drive_handler(nn_ComponentRequest *req) {
|
|||||||
req->returnCount = 1;
|
req->returnCount = 1;
|
||||||
return nn_pushinteger(C, conf.platterCount);
|
return nn_pushinteger(C, conf.platterCount);
|
||||||
}
|
}
|
||||||
|
if(nn_strcmp(method, "getLabel") == 0) {
|
||||||
|
dreq.action = NN_DRIVE_GETLABEL;
|
||||||
|
dreq.index = NN_MAX_LABEL;
|
||||||
|
char buf[NN_MAX_LABEL];
|
||||||
|
dreq.buf = buf;
|
||||||
|
e = state->handler(&dreq);
|
||||||
|
if(e) return e;
|
||||||
|
req->returnCount = 1;
|
||||||
|
if(dreq.index == 0) return nn_pushnull(C);
|
||||||
|
return nn_pushlstring(C, buf, dreq.index);
|
||||||
|
}
|
||||||
|
if(nn_strcmp(method, "setLabel") == 0) {
|
||||||
|
if(nn_checkstring(C, 0, "bad argument #1 (string expected)")) return NN_EBADCALL;
|
||||||
|
dreq.action = NN_DRIVE_SETLABEL;
|
||||||
|
dreq.buf = (char *)nn_tolstring(C, 0, &dreq.index);
|
||||||
|
e = state->handler(&dreq);
|
||||||
|
if(e) return e;
|
||||||
|
req->returnCount = 1;
|
||||||
|
if(dreq.index == 0) return nn_pushnull(C);
|
||||||
|
return nn_pushlstring(C, dreq.buf, dreq.index);
|
||||||
|
}
|
||||||
if(nn_strcmp(method, "readSector") == 0) {
|
if(nn_strcmp(method, "readSector") == 0) {
|
||||||
nn_costComponent(C, req->compAddress, conf.readsPerTick);
|
nn_costComponent(C, req->compAddress, conf.readsPerTick);
|
||||||
nn_removeEnergy(C, conf.dataEnergyCost * conf.sectorSize);
|
nn_removeEnergy(C, conf.dataEnergyCost * conf.sectorSize);
|
||||||
|
|||||||
Reference in New Issue
Block a user