]> git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - image.c
physics: fix and refactor unsticking
[xonotic/darkplaces.git] / image.c
diff --git a/image.c b/image.c
index 9f253a1dfb9a65461e69163cc4f995cca880bdf2..15835797ecde5bf6c2df3ed18f4402a55a724a5d 100644 (file)
--- a/image.c
+++ b/image.c
@@ -921,7 +921,7 @@ void Image_StripImageExtension (const char *in, char *out, size_t size_out)
        if (ext && (!strcmp(ext, "tga") || !strcmp(ext, "pcx") || !strcmp(ext, "lmp") || !strcmp(ext, "png") || !strcmp(ext, "jpg") || !strcmp(ext, "wal")))
                FS_StripExtension(in, out, size_out);
        else
-               strlcpy(out, in, size_out);
+               dp_strlcpy(out, in, size_out);
 }
 
 static unsigned char image_linearfromsrgb[256];
@@ -970,46 +970,28 @@ imageformat_t;
 imageformat_t imageformats_tenebrae[] =
 {
        {"override/%s.tga", LoadTGA_BGRA},
-       {"override/%s.TGA", LoadTGA_BGRA},
        {"override/%s.png", PNG_LoadImage_BGRA},
-       {"override/%s.PNG", PNG_LoadImage_BGRA},
        {"override/%s.jpg", JPEG_LoadImage_BGRA},
-       {"override/%s.JPG", JPEG_LoadImage_BGRA},
        {"override/%s.pcx", LoadPCX_BGRA},
-       {"override/%s.PCX", LoadPCX_BGRA},      
        {"%s.tga", LoadTGA_BGRA},
-       {"%s.TGA", LoadTGA_BGRA},
        {"%s.png", PNG_LoadImage_BGRA},
-       {"%s.PNG", PNG_LoadImage_BGRA},
        {"%s.jpg", JPEG_LoadImage_BGRA},
-       {"%s.JPG", JPEG_LoadImage_BGRA},
        {"%s.pcx", LoadPCX_BGRA},
-       {"%s.PCX", LoadPCX_BGRA},
        {NULL, NULL}
 };
 
 imageformat_t imageformats_nopath[] =
 {
        {"override/%s.tga", LoadTGA_BGRA},
-       {"override/%s.TGA", LoadTGA_BGRA},
        {"override/%s.png", PNG_LoadImage_BGRA},
-       {"override/%s.PNG", PNG_LoadImage_BGRA},
        {"override/%s.jpg", JPEG_LoadImage_BGRA},
-       {"override/%s.JPG", JPEG_LoadImage_BGRA},
        {"textures/%s.tga", LoadTGA_BGRA},
-       {"textures/%s.TGA", LoadTGA_BGRA},
        {"textures/%s.png", PNG_LoadImage_BGRA},
-       {"textures/%s.PNG", PNG_LoadImage_BGRA},
        {"textures/%s.jpg", JPEG_LoadImage_BGRA},
-       {"textures/%s.JPG", JPEG_LoadImage_BGRA},
        {"%s.tga", LoadTGA_BGRA},
-       {"%s.TGA", LoadTGA_BGRA},
        {"%s.png", PNG_LoadImage_BGRA},
-       {"%s.PNG", PNG_LoadImage_BGRA},
        {"%s.jpg", JPEG_LoadImage_BGRA},
-       {"%s.JPG", JPEG_LoadImage_BGRA},
        {"%s.pcx", LoadPCX_BGRA},
-       {"%s.PCX", LoadPCX_BGRA},
        {NULL, NULL}
 };
 
@@ -1021,58 +1003,39 @@ imageformat_t imageformats_nopath[] =
 imageformat_t imageformats_dq[] =
 {
        {"%s.tga", LoadTGA_BGRA},
-       {"%s.TGA", LoadTGA_BGRA},
        {"%s.jpg", JPEG_LoadImage_BGRA},
-       {"%s.JPG", JPEG_LoadImage_BGRA},        
        {"texturemaps/%s.tga", LoadTGA_BGRA},
-       {"texturemaps/%s.TGA", LoadTGA_BGRA},   
        {"texturemaps/%s.jpg", JPEG_LoadImage_BGRA},
-       {"texturemaps/%s.JPG", JPEG_LoadImage_BGRA},    
        {NULL, NULL}
 };
 
 imageformat_t imageformats_textures[] =
 {
        {"%s.tga", LoadTGA_BGRA},
-       {"%s.TGA", LoadTGA_BGRA},
        {"%s.png", PNG_LoadImage_BGRA},
-       {"%s.PNG", PNG_LoadImage_BGRA},
        {"%s.jpg", JPEG_LoadImage_BGRA},
-       {"%s.JPG", JPEG_LoadImage_BGRA},
        {"%s.pcx", LoadPCX_BGRA},
-       {"%s.PCX", LoadPCX_BGRA},
        {"%s.wal", LoadWAL_BGRA},
-       {"%s.WAL", LoadWAL_BGRA},       
        {NULL, NULL}
 };
 
 imageformat_t imageformats_gfx[] =
 {
        {"%s.tga", LoadTGA_BGRA},
-       {"%s.TGA", LoadTGA_BGRA},
        {"%s.png", PNG_LoadImage_BGRA},
-       {"%s.PNG", PNG_LoadImage_BGRA},
        {"%s.jpg", JPEG_LoadImage_BGRA},
-       {"%s.JPG", JPEG_LoadImage_BGRA},
        {"%s.pcx", LoadPCX_BGRA},
-       {"%s.PCX", LoadPCX_BGRA},
        {"%s.lmp", LoadLMP_BGRA},
-       {"%s.LMP", LoadLMP_BGRA},
        {NULL, NULL}
 };
 
 imageformat_t imageformats_other[] =
 {
        {"%s.tga", LoadTGA_BGRA},
-       {"%s.TGA", LoadTGA_BGRA},
        {"%s.png", PNG_LoadImage_BGRA},
-       {"%s.PNG", PNG_LoadImage_BGRA},
        {"%s.jpg", JPEG_LoadImage_BGRA},
-       {"%s.JPG", JPEG_LoadImage_BGRA},
        {"%s.pcx", LoadPCX_BGRA},
-       {"%s.PCX", LoadPCX_BGRA},
        {"%s.lmp", LoadLMP_BGRA},
-       {"%s.LMP", LoadLMP_BGRA},       
        {NULL, NULL}
 };
 
@@ -1096,14 +1059,14 @@ unsigned char *loadimagepixelsbgra (const char *filename, qbool complain, qbool
                        *c = '#';
        path[0] = 0;
        name[0] = 0;
-       strlcpy(afterpath, basename, sizeof(afterpath));
+       dp_strlcpy(afterpath, basename, sizeof(afterpath));
        if (strchr(basename, '/'))
        {
                int i;
                for (i = 0;i < (int)sizeof(path)-1 && basename[i] != '/' && basename[i];i++)
                        path[i] = basename[i];
                path[i] = 0;
-               strlcpy(afterpath, basename + i + 1, sizeof(afterpath));
+               dp_strlcpy(afterpath, basename + i + 1, sizeof(afterpath));
        }
        if (gamemode == GAME_TENEBRAE)
                firstformat = imageformats_tenebrae;
@@ -1121,8 +1084,10 @@ unsigned char *loadimagepixelsbgra (const char *filename, qbool complain, qbool
        for (format = firstformat;format->formatstring;format++)
        {
                dpsnprintf (name, sizeof(name), format->formatstring, basename);
-               f = FS_LoadFile(name, tempmempool, true, &filesize);
-               if (f)
+
+               FS_SanitizePath(name);
+
+               if(FS_FileExists(name) && (f = FS_LoadFile(name, tempmempool, true, &filesize)) != NULL)
                {
                        mymiplevel = miplevel ? *miplevel : 0;
                        image_width = 0;