Example #1
0
void ListUpdater::finish(DownloadOperation operation) {
    if (operation == DOWNLOAD_HASH) {
        if (compareHashes()) {
            // No new updates
            removeServerHashFile();
            emit finished(NO_UPDATE);
            return ;
        }

        downloadList();

    } else if (operation == DOWNLOAD_LIST) {
        removeOldFiles();
        renameNewFiles();
        emit finished(UPDATE);
    }

}
Example #2
0
char * findMissingSongs(char * masterList, char * clientList, char * masterHash, char * clientHash)	{
	char  MASTER[strlen(masterList)+1];
	char  CLIENT[strlen(clientList)+1];
	char mHash[32];
	char cHash[32];
	char * cHashCounter = clientHash;

	memset(MASTER, 0, strlen(masterList)+1);
	memset(CLIENT, 0, strlen(clientList)+1);
	memset(mHash, 0, 32);
	memset(cHash, 0, 32);
	int i;

	strncpy(MASTER, masterList, strlen(masterList));
	strncpy(CLIENT, clientList, strlen(clientList));

	char CLIENTCopy[strlen(CLIENT)];
	strncpy(CLIENTCopy, CLIENT, strlen(CLIENT));
	char * MISSING = (char *) malloc(10000 * sizeof(char));
	memset(MISSING, 0, sizeof(MISSING));
	char * mHashIterator;
	char * cHashIterator;
	char * masterIterator;
	char * clientIterator;
	char * endmHash;
	char * endcHash;
	char * endMASTER;
	char * endCLIENT;
	int found=0;

	//Get next hash from master
	memcpy(mHash, masterHash, 32);

	/*printf("mHash: ");
	for(i = 0; i < 32; i++) printf("%02x", (unsigned char) mHash[i]);
	printf("\n");*/

	//Get next file name from master	
	masterIterator = strtok_r(MASTER,";",&endMASTER);
	while(masterIterator != NULL)	{
		//Reset clientHash pointer
		cHashCounter = clientHash;
		//Get next hash from client
		memcpy(cHash, cHashCounter, 32);

		/*printf("cHash: ");
		for(i = 0; i < 32; i++) printf("%02x", (unsigned char) cHash[i]);
		printf("\n");*/

		//Reset CLIENT File names list
		strncpy(CLIENTCopy,CLIENT,strlen(CLIENT));
		//Get next file name from client
		clientIterator = strtok_r(CLIENTCopy, ";", &endCLIENT);
		
		while( clientIterator != NULL )	{
			//Compare Hashes
			if (compareHashes(mHash,cHash,32)){
				found = 1;
			}
			//Get next hash from client
			cHashCounter = cHashCounter + 32;
			memcpy(cHash, cHashCounter, 32);

			/*printf("cHash: ");
			for(i = 0; i < 32; i++) printf("%02x", (unsigned char) cHash[i]);
			printf("\n");*/

			//Get next file name from client
			clientIterator = strtok_r(NULL,";", &endCLIENT);
		}
		//No Matches
		if (found == 0)	{
			//Add File name from master to MISSING list
			//MISSING = (char *) realloc(MISSING, strlen(masterIterator));
			strncat(MISSING, masterIterator, strlen(masterIterator));
			strncat(MISSING, ";", sizeof(char));
		}
	
		//reset found
		found = 0;

		//Get next hash from master
		masterHash = masterHash + 32;
		memcpy(mHash, masterHash, 32);

		/*printf("mHash: ");
		for(i = 0; i < 32; i++) printf("%02x", (unsigned char) mHash[i]);
		printf("\n");*/

		//Get next file name from master	
		masterIterator = strtok_r(NULL,";",&endMASTER);

	}
	//Set null terminator in MISSING
	MISSING[strlen(MISSING)-1]=0;
	//printf("missing: %s\n", MISSING);	
	return MISSING;
}