2008年8月20日星期三

我写的按日期归类的哈希表

memset(pAppletData->fullpath,0,PHOTO_MAX_PATH);
sprintf(pAppletData->fullpath,"%s%s",pAppletData->selectpath,entry->d_name);

if(pAppletData->filepStat == ListHead)
{
//creat
pS =(FiledataNode *)OS_Malloc(sizeof(FiledataNode));
pS->next = NULL;
pS->index = index;
//get entry data
strcpy(pS->fullpath,pAppletData->fullpath);
// strcat(pS->fullpath,entry->d_name);
// OS_TaskDelay(10);
#ifdef WIN32
pS->datetime = i%8;
sprintf(pS->datetime_name, "%d-%d-%d",i%8,i%8,i%8);

#else

ufs_stat(pAppletData->fullpath, &f_stat);
filedate = f_stat.st_mtime;
AF_PRINTF("fullpath: %s, \r\nyear(%d), month(%d), date(%d) \r\n",pAppletData->fullpath,(1980 + filedate.year),filedate.month,filedate.day);
pS->datetime = 19800000 + filedate.year*10000 + filedate.month*100 + filedate.day;
AF_PRINTF("----------------------------name =%s index =%d\n",pS->fullpath,pS->index);
sprintf(pS->datetime_name, "%d-%d-%d",(1980 + filedate.year),filedate.month,filedate.day);
#endif

// strcpy(pS->datetime_name,pAppletData->pSVirtualDirArray->datetime_name);

pSVirtualDirArray = (VirtualDirArray *)OS_Malloc(sizeof(VirtualDirArray));
pSVirtualDirArray->next = NULL;
pHeadVirtualDirArray = pSVirtualDirArray;
pSVirtualDirArray->childNode = pS;
pSVirtualDirArray->datetime = pS->datetime;
strcpy(pSVirtualDirArray->datetime_name,pS->datetime_name);

pAppletData->nfilesCount++;
pAppletData->totalEntriesCount++;
pAppletData->filepStat = ListBody;

}
else //Body
{
pS =(FiledataNode *)OS_Malloc(sizeof(FiledataNode));
pS->next = NULL;
pS->index = index;

//get fullpath and Time data
strcpy(pS->fullpath,pAppletData->fullpath);
// strcat(pS->fullpath,entry->d_name);
//OS_TaskDelay(10);
// AF_PRINTF("----------------------------name =%s index =%d\n",pS->fullpath,pS->index);
#ifdef WIN32
pS->datetime = i%8;
sprintf(pS->datetime_name, "%d-%d-%d",i%8,i%8,i%8);
#else

ufs_stat(pAppletData->fullpath, &f_stat);
filedate = f_stat.st_mtime;
AF_PRINTF("fullpath: %s, \r\nyear(%d), month(%d), date(%d) \r\n",pAppletData->fullpath,(1980 + filedate.year),filedate.month,filedate.day);
pS->datetime = 19800000 + filedate.year*10000 + filedate.month*100 + filedate.day;
AF_PRINTF("----------------------------name =%s index =%d\n",pS->fullpath,pS->index);
sprintf(pS->datetime_name, "%d-%d-%d",(1980 + filedate.year),filedate.month,filedate.day);
#endif

pSVirtualDirArray = pHeadVirtualDirArray;
findout = FALSE;
while(pSVirtualDirArray->next != NULL)
{
//time same

if (pSVirtualDirArray->datetime == pS->datetime)

{
FiledataNode *temp;
temp = pSVirtualDirArray->childNode;
pSVirtualDirArray->childNode = pS;
pS->next = temp;
findout = TRUE;
break;
}
pSVirtualDirArray = pSVirtualDirArray->next;
}
//the last one
if(pSVirtualDirArray->next == NULL)
{
if (pSVirtualDirArray->datetime == pS->datetime)
{
FiledataNode *temp;
temp = pSVirtualDirArray->childNode;
pSVirtualDirArray->childNode = pS;
pS->next = temp;
findout = TRUE;
}
}
if(findout != TRUE)
{
pSVirtualDirArray->next = (VirtualDirArray *)OS_Malloc(sizeof(VirtualDirArray));
pSVirtualDirArray = pSVirtualDirArray->next;
pSVirtualDirArray->next = NULL;
pSVirtualDirArray->childNode = pS;
pSVirtualDirArray->datetime = pS->datetime;
strcpy(pSVirtualDirArray->datetime_name,pS->datetime_name);
AF_PRINTF("fullpath: %s\r\n",pAppletData->fullpath);

}
pAppletData->nfilesCount++;
pAppletData->totalEntriesCount++;
pAppletData->filepStat = ListBody;
}

// if (pAppletData->nfilesCount==pAppletData->nfiles)
if ((i + 1) ==(pAppletData->totalEntries-1))
{
VirtualfolderSort(pHeadVirtualDirArray);
pAppletData->pHeadVirtualDirArray = pHeadVirtualDirArray;

pSVirtualDirArray = pHeadVirtualDirArray;

//count how many virual dir is.
for ( pAppletData->nVirualdirs = 0;pSVirtualDirArray != NULL;pAppletData->nVirualdirs++)
{
pSVirtualDirArray = pSVirtualDirArray->next;
}
}

没有评论: