return ERROR_FILEIO_OPERATION_FAILED;
}
}
-
+
+ /* win32 always opens in binary mode */
+#ifndef _WIN32
if (fileio->type == FILEIO_BINARY)
+#endif
+ {
strcat(access, "b");
+ }
if (!(fileio_local->file = fopen(fileio->url, access)))
{
}
}
+int fileio_read_u32(fileio_t *fileio, u32 *data)
+{
+ u8 buf[4];
+ u32 size_read;
+ int retval;
+
+ switch (fileio->location)
+ {
+ case FILEIO_LOCAL:
+ if ((retval = fileio_local_read(fileio, 4, buf, &size_read)) != ERROR_OK)
+ return retval;
+ *data = be_to_h_u32(buf);
+ break;
+ default:
+ ERROR("BUG: should never get here");
+ exit(-1);
+ }
+
+ return ERROR_OK;
+}
+
+int fileio_local_fgets(fileio_t *fileio, u32 size, u8 *buffer)
+{
+ fileio_local_t *fileio_local = fileio->location_private;
+
+ if( fgets(buffer, size, fileio_local->file) == NULL)
+ return ERROR_FILEIO_OPERATION_FAILED;
+
+ return ERROR_OK;
+}
+
+int fileio_fgets(fileio_t *fileio, u32 size, u8 *buffer)
+{
+ switch (fileio->location)
+ {
+ case FILEIO_LOCAL:
+ return fileio_local_fgets(fileio, size, buffer);
+ break;
+ default:
+ ERROR("BUG: should never get here");
+ exit(-1);
+ }
+}
+
int fileio_local_write(fileio_t *fileio, u32 size, u8 *buffer, u32 *size_written)
{
fileio_local_t *fileio_local = fileio->location_private;
int fileio_write(fileio_t *fileio, u32 size, u8 *buffer, u32 *size_written)
{
+ int retval;
+
+ switch (fileio->location)
+ {
+ case FILEIO_LOCAL:
+ retval = fileio_local_write(fileio, size, buffer, size_written);
+ break;
+ default:
+ ERROR("BUG: should never get here");
+ exit(-1);
+ }
+
+ if (retval == ERROR_OK)
+ fileio->size += *size_written;
+
+ return retval;;
+}
+
+int fileio_write_u32(fileio_t *fileio, u32 data)
+{
+ u8 buf[4];
+ u32 size_written;
+ int retval;
+
+ h_u32_to_be(buf, data);
+
switch (fileio->location)
{
case FILEIO_LOCAL:
- return fileio_local_write(fileio, size, buffer, size_written);
+ if ((retval = fileio_local_write(fileio, 4, buf, &size_written)) != ERROR_OK)
+ return retval;
break;
default:
ERROR("BUG: should never get here");