mirror of https://github.com/gungwald/copy.git
90 lines
3.2 KiB
C
90 lines
3.2 KiB
C
#include <stdbool.h>
|
|
#include <stdint.h>
|
|
#include <apple2_filetype.h>
|
|
#include "prodos.h"
|
|
#include "prodosext.h"
|
|
#include "io.h"
|
|
|
|
uint8_t getFileInfo(FilePath name, struct GetFileInfoParams *params)
|
|
{
|
|
params->param_count = GET_FILE_INFO_PARAM_COUNT;
|
|
params->pathname = name;
|
|
printf("params address = %x\n", &(params->param_count));
|
|
printf("params address = %x\n", params);
|
|
return get_file_info(params);
|
|
}
|
|
|
|
bool isDirectory(struct GetFileInfoParams *params)
|
|
{
|
|
return params->file_type == PRODOS_T_DIR;
|
|
}
|
|
|
|
const char *getMessage(uint8_t errorCode)
|
|
{
|
|
switch (errorCode) {
|
|
case PRODOS_E_NONE:
|
|
return "No error";
|
|
case PRODOS_E_BAD_SYS_CALL_NUM:
|
|
return "Bad system call number";
|
|
case PRODOS_E_BAD_SYS_PARAM_COUNT:
|
|
return "Bad system call parameter count";
|
|
case PRODOS_E_INTERRUPT_VECTOR_TABLE_FULL:
|
|
return "Interrupt vector table full";
|
|
case PRODOS_E_IO_ERROR:
|
|
return "I/O error";
|
|
case PRODOS_E_NO_DEVICE:
|
|
return "No device detected/connected";
|
|
case PRODOS_E_DISK_WRITE_PROTECTED:
|
|
return "Disk is write protected";
|
|
case PRODOS_E_DISK_SWITCHED:
|
|
return "Disk switched";
|
|
case PRODOS_E_INVALID_PATH_SYNTAX:
|
|
return "Invalid path syntax";
|
|
case PRODOS_E_FILE_CTRL_BLK_TABLE_FULL:
|
|
return "File control block table full";
|
|
case PRODOS_E_INVALID_REF_NUM:
|
|
return "Invalid reference number";
|
|
case PRODOS_E_PATH_NOT_FOUND:
|
|
return "Path not found";
|
|
case PRODOS_E_VOLUME_DIR_NOT_FOUND:
|
|
return "Volume directory not found";
|
|
case PRODOS_E_FILE_NOT_FOUND:
|
|
return "File not found";
|
|
case PRODOS_E_DUPLICATE_FILE_NAME:
|
|
return "Duplicate file name";
|
|
case PRODOS_E_OVERRUN_ERROR:
|
|
return "No space left on device";
|
|
case PRODOS_E_VOLUME_DIR_FULL:
|
|
return "No entries left in volume directory";
|
|
case PRODOS_E_INCOMPATIBLE_FILE_FORMAT:
|
|
return "Incompatible file format";
|
|
case PRODOS_E_UNSUPPORTED_STORAGE_TYPE:
|
|
return "Unsupported storage type";
|
|
case PRODOS_E_END_OF_FILE:
|
|
return "End of file reached";
|
|
case PRODOS_E_POSITION_OUT_OF_RANGE:
|
|
return "File position out of range";
|
|
case PRODOS_E_ACCESS_ERROR:
|
|
return "File attribute forbids operation";
|
|
case PRODOS_E_FILE_IS_OPEN:
|
|
return "File is open";
|
|
case PRODOS_E_DIR_COUNT_ERROR:
|
|
return "Directory header / file entry mismatch";
|
|
case PRODOS_E_NOT_PRODOS_DISK:
|
|
"Not a ProDOS disk";
|
|
case PRODOS_E_INVALID_PARAM:
|
|
return "Invalid value in parameter";
|
|
case PRODOS_E_VOLUME_CTRL_BLK_TABLE_FULL:
|
|
return "Volume control block table full";
|
|
case PRODOS_E_BAD_BUFFER_ADDR:
|
|
return "Bad buffer address";
|
|
case PRODOS_E_DUPLICATE_VOLUME:
|
|
return "Duplicate volume";
|
|
case PRODOS_E_BITMAP_ADDR_IMPOSSIBLE:
|
|
return "Bitmap address impossible";
|
|
default:
|
|
return "Unknown error";
|
|
}
|
|
}
|
|
|