ssize_t filestream_write(RFILE *stream, const void *s, size_t len) { if (!stream) return -1; #if defined(VITA) || defined(PSP) return sceIoWrite(stream->fd, s, len); #elif defined(__CELLOS_LV2__) uint64_t bytes_written; if (cellFsWrite(stream->fd, s, len, &bytes_written) != CELL_FS_SUCCEEDED) return -1; return bytes_written; #else #if defined(HAVE_BUFFERED_IO) if ((stream->hints & RFILE_HINT_UNBUFFERED) == 0) return fwrite(s, 1, len, stream->fp); else #endif #ifdef HAVE_MMAP if (stream->hints & RFILE_HINT_MMAP) return -1; else #endif return write(stream->fd, s, len); #endif }
int disable_cobra_stage() { cellFsUtilMount_h("CELL_FS_IOS:BUILTIN_FLSH1", "CELL_FS_FAT", "/dev_habib", 0, 0, 0, 0, 0); CellFsStat stat; cellFsStat(CB_LOCATION, &stat); uint64_t len=stat.st_size; uint8_t *buf; uint64_t size; int src; int dst; page_allocate_auto(NULL, 0x40000, 0x2F, (void **)&buf); if (cellFsOpen(CB_LOCATION, CELL_FS_O_RDONLY, &src, 0, NULL, 0) == 0) { cellFsRead(src, buf, len, &size); cellFsClose(src); } else { page_free(NULL, buf, 0x2F); return -1; } if (cellFsOpen(CB_LOCATION".bak", CELL_FS_O_WRONLY | CELL_FS_O_CREAT | CELL_FS_O_TRUNC, &dst, 0666, NULL, 0) == 0) { cellFsWrite(dst, buf, len, &size); cellFsClose(dst); } else { page_free(NULL, buf, 0x2F); return -1; } page_free(NULL, buf, 0x2F); cellFsUnlink(CB_LOCATION); size=0x5343450000000000; cellFsOpen("/dev_hdd0/tmp/loadoptical", CELL_FS_O_WRONLY | CELL_FS_O_CREAT | CELL_FS_O_TRUNC, &dst, 0666, NULL, 0); cellFsWrite(dst, &size, 4, &size); cellFsClose(dst); return 0; }
void log_printf(const char *format, ...) { char *str = (char *) buff; va_list opt; va_start(opt, format); vsprintf( (void *) buff, format, opt); va_end(opt); uint64_t sw; cellFsWrite(LOG, (const void *) str, (uint64_t)strlen(str), &sw); }
ssize_t retro_fwrite(RFILE *stream, const void *s, size_t len) { if (!stream) return -1; #if defined(VITA) || defined(PSP) return sceIoWrite(stream->fd, s, len); #elif defined(__CELLOS_LV2__) uint64_t bytes_written; if (cellFsWrite(stream->fd, s, len, &bytes_written) != CELL_FS_SUCCEEDED) return -1; return bytes_written; #elif defined(HAVE_BUFFERED_IO) return fwrite(s, 1, len, stream->fd); #else return write(stream->fd, s, len); #endif }
int write_cobra_config(void) { int fd; uint64_t w; int ret = 0; if (cellFsOpen(COBRA_CONFIG_FILE, CELL_FS_O_WRONLY|CELL_FS_O_CREAT|CELL_FS_O_TRUNC, &fd, 0666, NULL, 0) != 0) { return ENODEV; } if (cellFsWrite(fd, &config, sizeof(config), &w) != 0) ret = ENODEV; cellFsClose(fd); return ret; }