- fixed problem with getFileDirectory-service with a single file as argument - test case Ft4 (ed.1)

pull/6/head
Michael Zillgith 10 years ago
parent b1d5e10203
commit 96096b7f75

@ -464,53 +464,58 @@ addFileEntriesToResponse(uint8_t* buffer, int bufPos, int maxBufSize, char* dire
break;
}
else {
if (*continueAfterFileName != NULL) {
if (strcmp(*continueAfterFileName, directoryName) == 0) {
*continueAfterFileName = NULL;
}
}
else {
uint64_t msTime;
bufPos = addFileEntriesToResponse(buffer, bufPos, maxBufSize, directoryName, continueAfterFileName, moreFollows);
uint32_t fileSize;
}
FileSystem_getFileInfo(directoryName, &fileSize, &msTime);
fileName = FileSystem_readDirectory(directory, &isDirectory);
}
char gtString[30];
FileSystem_closeDirectory(directory);
}
else {
Conversions_msTimeToGeneralizedTime(msTime, (uint8_t*) gtString);
if (*continueAfterFileName != NULL) {
if (strcmp(*continueAfterFileName, directoryName) == 0) {
*continueAfterFileName = NULL;
}
}
else {
uint64_t msTime;
int fileAttributesSize = encodeFileAttributes(0xa1, fileSize, gtString, NULL, 0);
uint32_t fileSize;
int filenameSize = encodeFileSpecification(0xa0, directoryName, NULL, 0);
if (FileSystem_getFileInfo(directoryName, &fileSize, &msTime) == NULL)
bufPos = -1;
else {
int dirEntrySize = 2 + fileAttributesSize + filenameSize;
char gtString[30];
int overallEntrySize = 1 + BerEncoder_determineLengthSize(dirEntrySize) + dirEntrySize;
Conversions_msTimeToGeneralizedTime(msTime, (uint8_t*) gtString);
int bufferSpaceLeft = maxBufSize - bufPos;
int fileAttributesSize = encodeFileAttributes(0xa1, fileSize, gtString, NULL, 0);
if (overallEntrySize > bufferSpaceLeft) {
*moreFollows = true;
break;
}
int filenameSize = encodeFileSpecification(0xa0, directoryName, NULL, 0);
bufPos = BerEncoder_encodeTL(0x30, dirEntrySize, buffer, bufPos); /* SEQUENCE (DirectoryEntry) */
bufPos = encodeFileSpecification(0xa0, directoryName, buffer, bufPos); /* fileName */
bufPos = encodeFileAttributes(0xa1, fileSize, gtString, buffer, bufPos); /* file attributes */
int dirEntrySize = 2 + fileAttributesSize + filenameSize;
}
int overallEntrySize = 1 + BerEncoder_determineLengthSize(dirEntrySize) + dirEntrySize;
}
int bufferSpaceLeft = maxBufSize - bufPos;
if (overallEntrySize > bufferSpaceLeft) {
*moreFollows = true;
//break;
}
bufPos = BerEncoder_encodeTL(0x30, dirEntrySize, buffer, bufPos); /* SEQUENCE (DirectoryEntry) */
bufPos = encodeFileSpecification(0xa0, directoryName, buffer, bufPos); /* fileName */
bufPos = encodeFileAttributes(0xa1, fileSize, gtString, buffer, bufPos); /* file attributes */
}
fileName = FileSystem_readDirectory(directory, &isDirectory);
}
FileSystem_closeDirectory(directory);
}
else
bufPos = -1;
directoryName[directoryNameLength] = 0;

Loading…
Cancel
Save