X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fdarkplaces.git;a=blobdiff_plain;f=fs.c;h=8298a5e9968ecfbdf88be0de80b9a02cda45f3ac;hp=258e8a77c1fdbb63f31f87448e77d1784d3c042a;hb=5bdc0879026939f551a3ff217064732d59731be2;hpb=b09b9ac1b19da4d06dec10bebd7f6176ce225855 diff --git a/fs.c b/fs.c index 258e8a77..8298a5e9 100644 --- a/fs.c +++ b/fs.c @@ -405,10 +405,10 @@ qboolean PK3_GetEndOfCentralDir (const char *packfile, FILE *packhandle, pk3_end buffer = Mem_Alloc (tempmempool, maxsize); #ifdef FS_USESYSCALLS lseek (packhandle, filesize - maxsize, SEEK_SET); - if (read (packhandle, buffer, maxsize) != (unsigned long) maxsize) + if (read (packhandle, buffer, maxsize) != (ssize_t) maxsize) #else fseek (packhandle, filesize - maxsize, SEEK_SET); - if (fread (buffer, 1, maxsize, packhandle) != (unsigned long) maxsize) + if (fread (buffer, 1, maxsize, packhandle) != (size_t) maxsize) #endif { Mem_Free (buffer); @@ -665,28 +665,29 @@ static packfile_t* FS_AddFileToPack (const char* name, pack_t* pack, size_t realsize, file_flags_t flags) { int (*strcmp_funct) (const char* str1, const char* str2); - size_t left, right, middle; - int diff; + int left, right, middle; packfile_t *file; strcmp_funct = pack->ignorecase ? strcasecmp : strcmp; // Look for the slot we should put that file into (binary search) left = 0; - right = pack->numfiles; - while (left != right) + right = pack->numfiles - 1; + while (left <= right) { - middle = (left + right - 1) / 2; + int diff; + + middle = (left + right) / 2; diff = strcmp_funct (pack->files[middle].name, name); // If we found the file, there's a problem if (!diff) - Sys_Error ("Package %s contains several time the file %s\n", + Sys_Error ("Package %s contains the file %s several times\n", pack->filename, name); // If we're too far in the list if (diff > 0) - right = middle; + right = middle - 1; else left = middle + 1; } @@ -1136,7 +1137,6 @@ static searchpath_t *FS_FindFile (const char *name, int* index, qboolean quiet) { searchpath_t *search; pack_t *pak; - int (*strcmp_funct) (const char* str1, const char* str2); // search through the path, one element at a time for (search = fs_searchpaths;search;search = search->next) @@ -1144,26 +1144,27 @@ static searchpath_t *FS_FindFile (const char *name, int* index, qboolean quiet) // is the element a pak file? if (search->pack) { - size_t left, right, middle; + int (*strcmp_funct) (const char* str1, const char* str2); + int left, right, middle; pak = search->pack; strcmp_funct = pak->ignorecase ? strcasecmp : strcmp; // Look for the file (binary search) left = 0; - right = pak->numfiles; - while (left != right) + right = pak->numfiles - 1; + while (left <= right) { int diff; - middle = (left + right - 1) / 2; + middle = (left + right) / 2; diff = strcmp_funct (pak->files[middle].name, name); // Found it if (!diff) { if (!quiet) - Sys_Printf("FS_FindFile: %s in %s\n", + Con_DPrintf("FS_FindFile: %s in %s\n", pak->files[middle].name, pak->filename); if (index != NULL) @@ -1173,7 +1174,7 @@ static searchpath_t *FS_FindFile (const char *name, int* index, qboolean quiet) // If we're too far in the list if (diff > 0) - right = middle; + right = middle - 1; else left = middle + 1; } @@ -1185,7 +1186,7 @@ static searchpath_t *FS_FindFile (const char *name, int* index, qboolean quiet) if (FS_SysFileExists (netpath)) { if (!quiet) - Sys_Printf("FS_FindFile: %s\n", netpath); + Con_DPrintf("FS_FindFile: %s\n", netpath); if (index != NULL) *index = -1; @@ -1195,7 +1196,7 @@ static searchpath_t *FS_FindFile (const char *name, int* index, qboolean quiet) } if (!quiet) - Sys_Printf("FS_FindFile: can't find %s\n", name); + Con_DPrintf("FS_FindFile: can't find %s\n", name); if (index != NULL) *index = -1; @@ -1626,7 +1627,11 @@ int FS_Seek (qfile_t* file, long offset, int whence) // Quick path for unpacked files if (! (file->flags & FS_FLAG_PACKED)) #ifdef FS_USESYSCALLS - return lseek (file->stream, offset, whence); + { + if (lseek (file->stream, offset, whence) == -1) + return -1; + return 0; + } #else return fseek (file->stream, offset, whence); #endif @@ -2105,7 +2110,7 @@ fssearch_t *FS_Search(const char *pattern, int caseinsensitive, int quiet) if (liststart == NULL) liststart = listcurrent; if (!quiet) - Sys_Printf("SearchPackFile: %s : %s\n", pak->filename, temp); + Con_DPrintf("SearchPackFile: %s : %s\n", pak->filename, temp); } } // strip off one path element at a time until empty @@ -2144,7 +2149,7 @@ fssearch_t *FS_Search(const char *pattern, int caseinsensitive, int quiet) if (liststart == NULL) liststart = listcurrent; if (!quiet) - Sys_Printf("SearchDirFile: %s\n", temp); + Con_DPrintf("SearchDirFile: %s\n", temp); } } }