void AppendErrorString(std::string &result, int code) { char buf[128]; if (!appendErrorString(result, buf, strerror_r(code, buf, sizeof(buf)))) { AppendFormat(result, "Unknown error %d", code); } }
void SyncResult::processCompletedItem(const SyncFileItemPtr &item) { if (Progress::isWarningKind(item->_status)) { // Count any error conditions, error strings will have priority anyway. _foundFilesNotSynced = true; } if (item->isDirectory() && (item->_instruction == CSYNC_INSTRUCTION_NEW || item->_instruction == CSYNC_INSTRUCTION_TYPE_CHANGE || item->_instruction == CSYNC_INSTRUCTION_REMOVE || item->_instruction == CSYNC_INSTRUCTION_RENAME)) { _folderStructureWasChanged = true; } // Process the item to the gui if (item->_status == SyncFileItem::FatalError || item->_status == SyncFileItem::NormalError) { //: this displays an error string (%2) for a file %1 appendErrorString(QObject::tr("%1: %2").arg(item->_file, item->_errorString)); _numErrorItems++; if (!_firstItemError) { _firstItemError = item; } } else if (item->_status == SyncFileItem::Conflict) { if (item->_instruction == CSYNC_INSTRUCTION_CONFLICT) { _numNewConflictItems++; if (!_firstNewConflictItem) { _firstNewConflictItem = item; } } else { _numOldConflictItems++; } } else { if (!item->hasErrorStatus() && item->_status != SyncFileItem::FileIgnored && item->_direction == SyncFileItem::Down) { switch (item->_instruction) { case CSYNC_INSTRUCTION_NEW: case CSYNC_INSTRUCTION_TYPE_CHANGE: _numNewItems++; if (!_firstItemNew) _firstItemNew = item; break; case CSYNC_INSTRUCTION_REMOVE: _numRemovedItems++; if (!_firstItemDeleted) _firstItemDeleted = item; break; case CSYNC_INSTRUCTION_SYNC: _numUpdatedItems++; if (!_firstItemUpdated) _firstItemUpdated = item; break; case CSYNC_INSTRUCTION_RENAME: if (!_firstItemRenamed) { _firstItemRenamed = item; } _numRenamedItems++; break; default: // nothing. break; } } else if (item->_direction == SyncFileItem::None) { if (item->_instruction == CSYNC_INSTRUCTION_IGNORE) { _foundFilesNotSynced = true; } } } }