+ // save the position so we can go back to it
+ watermark = sb->readcount;
+ for (i = 0; i < nummiptex; i++)
+ {
+ doffset = MSG_ReadLittleLong(sb);
+ if (r_nosurftextures.integer)
+ continue;
+ if (doffset == -1)
+ {
+ Con_DPrintf("%s: miptex #%i missing\n", loadmodel->name, i);
+ continue;
+ }
+
+ MSG_InitReadBuffer(&miptexsb, sb->data + doffset, sb->cursize - doffset);
+
+ // copy name, but only up to 16 characters
+ // (the output buffer can hold more than this, but the input buffer is
+ // only 16)
+ for (j = 0; j < 16; j++)
+ name[j] = MSG_ReadByte(&miptexsb);
+ name[j] = 0;
+ // pretty up the buffer (replacing any trailing garbage with 0)
+ for (j = (int)strlen(name); j < 16; j++)
+ name[j] = 0;
+
+ if (!strncmp(name, "sky", 3))
+ numsky++;
+ }
+
+ // bump it back to where we started parsing
+ sb->readcount = watermark;
+
+ firstskynoshadowtexture = loadmodel->num_textures;
+ loadmodel->num_textures += numsky;