rem: desc = strtok(NULL, ":");
add: desc = strtok_r(NULL, ":", &next_token);
context: UsbPort::UsbPort(BDirectory* printer, BMessage *msg) 	: fFile(-1){	char device_id[USB_PRINTER_DEVICE_ID_LENGTH + 1];	char name[USB_PRINTER_DEVICE_ID_LENGTH + 1];	char *desc;	char *value;	int ret;	bool bidirectional = true;		// We support only one USB printer, so does BeOS R5.	fFile = open("/dev/printer/usb/0", O_RDWR | O_EXCL | O_BINARY, 0);	if (fFile < 0) {		// Try unidirectional access mode		bidirectional = false;		fFile = open("/dev/printer/usb/0", O_WRONLY | O_EXCL | O_BINARY, 0);	}		if (fFile < 0)		return;		// Get printer's DEVICE ID string	ret = ioctl(fFile, USB_PRINTER_GET_DEVICE_ID, device_id, sizeof(device_id));	if (ret < 0) {		close(fFile);		fFile = -1;		return;	}		// Fill up the message	msg->AddBool("bidirectional", bidirectional);	msg->AddString("device_id", device_id);	// parse and split the device_id string into separate parameters	desc = strtok(device_id, ":");		while (desc) {		snprintf(name, sizeof(name), "DEVID:%s", desc);		value = strtok(NULL, ";");		if (!value)			break;		msg->AddString(name, value);				// next device descriptor		desc = strtok(NULL, ":");		}}