void Favorite::setLmID( uint32 lmID, const char* imeiCrcHex ) { // Convert and concatenate the new imei lmid to set in the // infovec char tmpID[9]; sprintf(tmpID, "%x", lmID); char complete[17]; strcpy(complete, imeiCrcHex); strcat(complete, tmpID); InfoVect::const_iterator it; for (it = m_infos.begin(); it != m_infos.end(); ++it) { if (strcmp((*it)->getKey(), "lmid") == 0 && strncmp(imeiCrcHex, (*it)->getValue(), strlen(imeiCrcHex)) == 0) { // Found a lmid key, check the value // Found a matching imei, check the lmID (*it)->setValue(complete); break; } } if (it == m_infos.end()) { // Didnt find the lmid in the m_infos, add it to the vector. AdditionalInfo* info = new AdditionalInfo("lmid", complete, GuiProtEnums::dont_show); addAdditionalInfo(info); } m_lmID = lmID; }
Favorite::Favorite(int32 lat, int32 lon, const char* name, const char* shortName, const char* description, const char* category, const char* mapIconName, bool synced, uint32 lmID, const char* imeiCrcHex, const char* lmsID, const uint8* md5sum) { initMembers(); m_lat = lat; m_lon = lon; m_name = strdup_new(name); m_shortName = strdup_new(shortName); m_description = strdup_new(description); m_category = strdup_new(category); m_mapIconName = strdup_new(mapIconName); m_lmID = lmID; if (imeiCrcHex && lmID != MAX_UINT32) { char tmpID[9]; sprintf(tmpID, "%x", lmID); char complete[17]; strcpy(complete, imeiCrcHex); strcat(complete, tmpID); AdditionalInfo* info = new AdditionalInfo("lmid", complete, GuiProtEnums::dont_show); addAdditionalInfo(info); } m_lmsID = strdup_new(lmsID); m_md5sum = new uint8[MAX_SIZE_MD5SUM]; if (md5sum != NULL) { memcpy(m_md5sum, md5sum, MAX_SIZE_MD5SUM); } else { memset(m_md5sum, '0', MAX_SIZE_MD5SUM); } m_synced = synced; }
QList<DiskDevice *> enumerateDevice() { QList<DiskDevice *> devices; utils::writeLog("Enumerating imageable devices for OSX"); QProcess process; QStringList lines; process.setEnvironment(QStringList() << "LANG=C"); process.start("/usr/sbin/diskutil", QStringList() << "list", QIODevice::ReadWrite | QIODevice::Text); if (! process.waitForFinished()) utils::writeLog("Could not execute diskutil to enumerate devices"); else { QTextStream stdoutStream(process.readAllStandardOutput()); while (true) { QString line = stdoutStream.readLine().simplified(); /* Remove trailing and leading ws */ if (line.isNull()) break; /* The line holding the device is the only line always starting with 0: */ else if (line.startsWith("0:")) { lines << line; } } for (int i = 0; i < lines.count(); i++) { QString line = lines.at(i); QStringList deviceAttr = line.split(" "); /* * THE FOLLOWING LIST CHANGES IF THE DISK WAS NOT INITIALISED * In that case, <partition schema name> is missing and the * index for the following elements has to be adressed by n-1 * content is now: * [0] 0: * [1] <partition scheme name> * [2] <total_size> * [3] <size_unit> * [4] device name (disk0, disk1, etc) */ QString deviceSpace; QString devicePath("/dev/"); if (deviceAttr.at(1).startsWith("*")) { /* partition schema name was missing - uninitialised disk */ deviceSpace = deviceAttr.at(1) + " " + deviceAttr.at(2); devicePath += (new QString(deviceAttr.at(3)))->replace(0, 1, "rd"); } else { deviceSpace = deviceAttr.at(2) + " " + deviceAttr.at(3); QString deviceName(deviceAttr.at(4)); /* make the disk become a rdisk */ devicePath += deviceName.replace(0, 1, "rd"); } deviceSpace.remove("*"); DiskDevice *nd = new DiskDevice(i, devicePath, deviceSpace); utils::writeLog("================================================="); utils::writeLog("Starting to parse " + devicePath + " for additional info\n"); nd = addAdditionalInfo(nd); if (nd->getIsWritable()) { utils::writeLog("Parsed device as writable. Appending."); devices.append(nd); } else { utils::writeLog("Parsed device as NON-writable. NOT Appending."); } utils::writeLog("\n"); utils::writeLog("Finished parsing additional info for " + devicePath); utils::writeLog("=================================================\n"); } } return devices; }