Subversion Repositories freemyipod

Rev

Rev 956 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 956 Rev 958
Line 227... Line 227...
227
            if (flags & 2) storesize |= 0x80000000;
227
            if (flags & 2) storesize |= 0x80000000;
228
            int offs = 0;
228
            int offs = 0;
229
            if (flags & 8)
229
            if (flags & 8)
230
            {
230
            {
231
                offs = 0x800;
231
                offs = 0x800;
232
                size = ((size + 0xf) & ~0xf) + offs;
232
                size = ((size + 0xf) & ~0xf);
233
            }
233
            }
234
            if (flags & 1)
234
            if (flags & 1)
235
            {
235
            {
236
                endptr -= ((size + 0xfff) & ~0xfff);
236
                endptr -= ((offs + size + 0xfff) & ~0xfff);
237
                memcpy(&norbuf[endptr + offs], data, size);
-
 
238
                file = endptr;
237
                file = endptr;
239
            }
238
            }
240
            else
239
            else
241
            {
240
            {
242
                memcpy(&norbuf[beginptr + offs], data, size);
-
 
243
                file = beginptr;
241
                file = beginptr;
244
                beginptr += ((size + 0xfff) & ~0xfff);
242
                beginptr += ((offs + size + 0xfff) & ~0xfff);
245
            }
243
            }
-
 
244
            memcpy(&norbuf[file + offs], data, size);
246
            if (!(flags & 4))
245
            if (!(flags & 4))
247
            {
246
            {
248
                if (dirptr >= 0x2000)
247
                if (dirptr >= 0x2000)
249
                    panicf(PANIC_KILLTHREAD, "Error: Directory is full!");
248
                    panicf(PANIC_KILLTHREAD, "Error: Directory is full!");
250
                memcpy(&norbuf[dirptr], &script[sp], 8);
249
                memcpy(&norbuf[dirptr], &script[sp], 8);
Line 253... Line 252...
253
                dirptr += 0x10;
252
                dirptr += 0x10;
254
                sp += 2;
253
                sp += 2;
255
            }
254
            }
256
            if (flags & 8)
255
            if (flags & 8)
257
            {
256
            {
258
                size -= offs;
-
 
259
                memset(&norbuf[file], 0, 0x800);
257
                memset(&norbuf[file], 0, 0x800);
260
                memcpy(&norbuf[file], "87021.0\x01", 8);
258
                memcpy(&norbuf[file], "87021.0\x01", 8);
261
                *((uint32_t*)&norbuf[file + 0xc]) = size;
259
                *((uint32_t*)&norbuf[file + 0xc]) = size;
262
                sha1(&norbuf[file + 0x800], size, &norbuf[file + 0x10]);
260
                sha1(&norbuf[file + 0x800], size, &norbuf[file + 0x10]);
263
                *((uint32_t*)&norbuf[file + 0x20]) = 0;
261
                *((uint32_t*)&norbuf[file + 0x20]) = 0;