Skip to content

Commit

Permalink
freebsd_network: Check non-packaged data dir for firmware.
Browse files Browse the repository at this point in the history
When loading firmware, check the system non-packaged data dir first,
then the system data directory (as before). This allows loading of
firmware that doesn't reside in the system package.
  • Loading branch information
mmlr committed Oct 18, 2014
1 parent cd506e7 commit 8635eef
Showing 1 changed file with 21 additions and 9 deletions.
30 changes: 21 additions & 9 deletions src/libs/compat/freebsd_network/firmware.c
Expand Up @@ -53,6 +53,11 @@ firmware_get(const char* fbsdFirmwareName)
char* firmwarePath = NULL;
const char* haikuFirmwareName = NULL;
ssize_t readCount = 0;
directory_which checkDirs[] = { B_SYSTEM_NONPACKAGED_DATA_DIRECTORY,
B_SYSTEM_DATA_DIRECTORY };
size_t numCheckDirs
= sizeof(checkDirs) / sizeof(checkDirs[0]);
size_t i = 0;

haikuFirmwareName = getHaikuFirmwareName(fbsdFirmwareName,
fbsdFirmwareName);
Expand All @@ -61,17 +66,24 @@ firmware_get(const char* fbsdFirmwareName)
if (firmwarePath == NULL)
goto cleanup;

if (find_directory(B_SYSTEM_DATA_DIRECTORY, -1, false,
firmwarePath, B_PATH_NAME_LENGTH) != B_OK)
goto cleanup;

strlcat(firmwarePath, "/firmware/", B_PATH_NAME_LENGTH);
strlcat(firmwarePath, gDriverName, B_PATH_NAME_LENGTH);
strlcat(firmwarePath, "/", B_PATH_NAME_LENGTH);
strlcat(firmwarePath, haikuFirmwareName, B_PATH_NAME_LENGTH);
for (; i < numCheckDirs; i++) {
if (find_directory(checkDirs[i], -1, false, firmwarePath,
B_PATH_NAME_LENGTH) != B_OK) {
continue;
}

strlcat(firmwarePath, "/firmware/", B_PATH_NAME_LENGTH);
strlcat(firmwarePath, gDriverName, B_PATH_NAME_LENGTH);
strlcat(firmwarePath, "/", B_PATH_NAME_LENGTH);
strlcat(firmwarePath, haikuFirmwareName, B_PATH_NAME_LENGTH);

fileDescriptor = open(firmwarePath, B_READ_ONLY);
if (fileDescriptor >= 0)
break;
}

fileDescriptor = open(firmwarePath, B_READ_ONLY);
if (fileDescriptor == -1)
if (fileDescriptor < 0)
goto cleanup;

firmwareFileSize = lseek(fileDescriptor, 0, SEEK_END);
Expand Down

0 comments on commit 8635eef

Please sign in to comment.