EXPORT(sqInt) primitiveFileRename(void) { sqInt newNameSize; char * newNameIndex; sqInt okToRename; sqInt oldNamePointer; char * oldNameIndex; sqInt oldNameSize; sqInt newNamePointer; newNamePointer = interpreterProxy->stackValue(0); oldNamePointer = interpreterProxy->stackValue(1); if (!((interpreterProxy->isBytes(newNamePointer)) && (interpreterProxy->isBytes(oldNamePointer)))) { return interpreterProxy->primitiveFail(); } newNameIndex = interpreterProxy->firstIndexableField(newNamePointer); newNameSize = interpreterProxy->byteSizeOf(newNamePointer); oldNameIndex = interpreterProxy->firstIndexableField(oldNamePointer); /* If the security plugin can be loaded, use it to check for rename permission. If not, assume it's ok */ oldNameSize = interpreterProxy->byteSizeOf(oldNamePointer); if (sCRFfn != 0) { okToRename = ((sqInt (*)(char *, sqInt))sCRFfn)(oldNameIndex, oldNameSize); if (!(okToRename)) { return interpreterProxy->primitiveFail(); } } sqFileRenameOldSizeNewSize(oldNameIndex, oldNameSize, newNameIndex, newNameSize); if (!(interpreterProxy->failed())) { interpreterProxy->pop(2); } }
primitiveFileRename(void) { // FilePlugin>>#primitiveFileRename char *newNameIndex; sqInt newNamePointer; sqInt newNameSize; sqInt okToRename; char *oldNameIndex; sqInt oldNamePointer; sqInt oldNameSize; newNamePointer = stackValue(0); oldNamePointer = stackValue(1); if (!((isBytes(newNamePointer)) && (isBytes(oldNamePointer)))) { return primitiveFail(); } newNameIndex = firstIndexableField(newNamePointer); newNameSize = byteSizeOf(newNamePointer); oldNameIndex = firstIndexableField(oldNamePointer); /* If the security plugin can be loaded, use it to check for rename permission. If not, assume it's ok */ oldNameSize = byteSizeOf(oldNamePointer); if (sCRFfn != 0) { okToRename = ((sqInt (*)(char *, sqInt))sCRFfn)(oldNameIndex, oldNameSize); if (!okToRename) { return primitiveFail(); } } sqFileRenameOldSizeNewSize(oldNameIndex, oldNameSize, newNameIndex, newNameSize); if (!(failed())) { pop(2); } }