primitiveFileTruncate(void) { // FilePlugin>>#primitiveFileTruncate SQFile *file; sqInt objectPointer; sqInt sz; squeakFileOffsetType truncatePosition; if (!(isIntegerObject(stackValue(0)))) { sz = sizeof(squeakFileOffsetType); if ((byteSizeOf(stackValue(0))) > sz) { return primitiveFail(); } } truncatePosition = positive64BitValueOf(stackValue(0)); /* begin fileValueOf: */ objectPointer = stackValue(1); if (!((isBytes(objectPointer)) && ((byteSizeOf(objectPointer)) == (sizeof(SQFile))))) { primitiveFail(); file = null; goto l1; } file = firstIndexableField(objectPointer); l1: /* end fileValueOf: */; if (!(failed())) { sqFileTruncate(file, truncatePosition); } if (!(failed())) { pop(2); } }
EXPORT(sqInt) primitiveFileTruncate(void) { SQFile * file; sqInt sz; squeakFileOffsetType truncatePosition; sqInt objectPointer; if (!(((interpreterProxy->stackValue(0)) & 1))) { sz = sizeof(squeakFileOffsetType); if ((interpreterProxy->byteSizeOf(interpreterProxy->stackValue(0))) > sz) { return interpreterProxy->primitiveFail(); } } truncatePosition = interpreterProxy->positive64BitValueOf(interpreterProxy->stackValue(0)); /* begin fileValueOf: */ objectPointer = interpreterProxy->stackValue(1); if (!((interpreterProxy->isBytes(objectPointer)) && ((interpreterProxy->byteSizeOf(objectPointer)) == (fileRecordSize())))) { interpreterProxy->primitiveFail(); file = null; goto l1; } file = interpreterProxy->firstIndexableField(objectPointer); l1: /* end fileValueOf: */; if (!(interpreterProxy->failed())) { sqFileTruncate(file, truncatePosition); } if (!(interpreterProxy->failed())) { interpreterProxy->pop(2); } }