EXPORT(sqInt) primitiveSerialPortCloseByName(void) { char * cString; char *deviceName; char *p; sqInt len; sqInt terminatedString; interpreterProxy->success(interpreterProxy->isBytes(interpreterProxy->stackValue(0))); deviceName = ((char *) (interpreterProxy->firstIndexableField(interpreterProxy->stackValue(0)))); if (interpreterProxy->failed()) { return null; } /* begin allocateTerminatedString: */ len = interpreterProxy->sizeOfSTArrayFromCPrimitive(deviceName); terminatedString = interpreterProxy->instantiateClassindexableSize(interpreterProxy->classString(), len + 1); p = interpreterProxy->arrayValueOf(terminatedString); p[len] = 0; while (len >= 0) { len -= 1; p[len] = (deviceName[len]); } cString = p; serialPortCloseByName(cString); if (interpreterProxy->failed()) { return null; } interpreterProxy->pop(1); return null; }
/* return value ignored */ int serialPortClose(int portNum) { char serialPortName[PORT_NAME_SIZE]; if (portNum < 0 || portNum >= MAX_SERIAL_PORTS) { success(false); return 0; } make_portname_from_portnum(serialPortName, portNum); return serialPortCloseByName(serialPortName); }