Index: src/amiga-glue.m ================================================================== --- src/amiga-glue.m +++ src/amiga-glue.m @@ -15,12 +15,22 @@ * file. */ #include "config.h" +#import "OFApplication.h" +#import "OFHTTPRequest.h" +#import "OFHTTPResponse.h" +#import "OFMethodSignature.h" +#import "OFStdIOStream.h" +#import "OFZIPArchiveEntry.h" + #import "amiga-library.h" +#import "pbkdf2.h" #import "platform.h" +#import "scrypt.h" +#import "socket.h" #ifdef OF_AMIGAOS_M68K # define PPC_PARAMS(...) (void) # define M68K_ARG OF_M68K_ARG #else @@ -46,5 +56,259 @@ M68K_ARG(struct of_libc *, libc, a0) M68K_ARG(FILE **, sF, a1) return of_init(version, libc, sF); } + +int __saveds +glue_of_application_main PPC_PARAMS(int *argc, char ***argv, + id delegate) +{ + M68K_ARG(int *, argc, a0) + M68K_ARG(char ***, argv, a1) + M68K_ARG(id , delegate, a2) + + return of_application_main(argc, argv, delegate); +} + +const char *__saveds +glue_of_http_request_method_to_string PPC_PARAMS( + of_http_request_method_t method) +{ + M68K_ARG(of_http_request_method_t, method, d0) + + return of_http_request_method_to_string(method); +} + +of_http_request_method_t __saveds +glue_of_http_request_method_from_string PPC_PARAMS(OFString *string) +{ + M68K_ARG(OFString *, string, a0) + + return of_http_request_method_from_string(string); +} + +OFString *__saveds +glue_of_http_status_code_to_string PPC_PARAMS(short code) +{ + M68K_ARG(short, code, d0) + + return of_http_status_code_to_string(code); +} + +size_t __saveds +glue_of_sizeof_type_encoding PPC_PARAMS(const char *type) +{ + M68K_ARG(const char *, type, a0) + + return of_sizeof_type_encoding(type); +} + +size_t __saveds +glue_of_alignof_type_encoding PPC_PARAMS(const char *type) +{ + M68K_ARG(const char *, type, a0) + + return of_alignof_type_encoding(type); +} + +void __saveds +glue_of_logv PPC_PARAMS(OFConstantString *format, va_list arguments) +{ + M68K_ARG(OFConstantString *, format, a0) + M68K_ARG(va_list, arguments, a1) + + of_logv(format, arguments); +} + +OFString *__saveds +glue_of_zip_archive_entry_version_to_string PPC_PARAMS(uint16_t version) +{ + M68K_ARG(uint16_t, version, d0) + + return of_zip_archive_entry_version_to_string(version); +} + +OFString *__saveds +glue_of_zip_archive_entry_compression_method_to_string PPC_PARAMS( + uint16_t compressionMethod) +{ + M68K_ARG(uint16_t, compressionMethod, d0) + + return of_zip_archive_entry_compression_method_to_string( + compressionMethod); +} + +size_t __saveds +glue_of_zip_archive_entry_extra_field_find PPC_PARAMS(OFData *extraField, + uint16_t tag, uint16_t *size) +{ + M68K_ARG(OFData *, extraField, a0) + M68K_ARG(uint16_t, tag, d0) + M68K_ARG(uint16_t *, size, a1) + + return of_zip_archive_entry_extra_field_find(extraField, tag, size); +} + +void __saveds +glue_of_pbkdf2 PPC_PARAMS(OFHMAC *HMAC, size_t iterations, + const unsigned char *salt, size_t saltLength, const char *password, + size_t passwordLength, unsigned char *key, size_t keyLength, + bool allowsSwappableMemory) +{ + M68K_ARG(OFHMAC *, HMAC, a0) + M68K_ARG(size_t, iterations, d0) + M68K_ARG(const unsigned char *, salt, a1) + M68K_ARG(size_t, saltLength, d1) + M68K_ARG(const char *, password, a2) + M68K_ARG(size_t, passwordLength, d2) + M68K_ARG(unsigned char *, key, a3) + M68K_ARG(size_t, keyLength, d3) + M68K_ARG(bool, allowsSwappableMemory, d4) + + of_pbkdf2(HMAC, iterations, salt, saltLength, password, passwordLength, + key, keyLength, allowsSwappableMemory); +} + +void __saveds +glue_of_scrypt PPC_PARAMS(size_t blockSize, size_t costFactor, + size_t parallelization, const unsigned char *salt, size_t saltLength, + const char *password, size_t passwordLength, unsigned char *key, + size_t keyLength, bool allowsSwappableMemory) +{ + M68K_ARG(size_t, blockSize, d0) + M68K_ARG(size_t, costFactor, d1) + M68K_ARG(size_t, parallelization, d2) + M68K_ARG(const unsigned char *, salt, a0) + M68K_ARG(size_t, saltLength, d3) + M68K_ARG(const char *, password, a1) + M68K_ARG(size_t, passwordLength, d4) + M68K_ARG(unsigned char *, key, a2) + M68K_ARG(size_t, keyLength, d5) + M68K_ARG(bool, allowsSwappableMemory, d6) + + of_scrypt(blockSize, costFactor, parallelization, salt, saltLength, + password, passwordLength, key, keyLength, allowsSwappableMemory); +} + +of_socket_address_t __saveds +glue_of_socket_address_parse_ip PPC_PARAMS(OFString *IP, uint16_t port) +{ + M68K_ARG(OFString *, IP, a0) + M68K_ARG(uint16_t, port, d0) + + return of_socket_address_parse_ip(IP, port); +} + +of_socket_address_t __saveds +glue_of_socket_address_parse_ipv4 PPC_PARAMS(OFString *IP, uint16_t port) +{ + M68K_ARG(OFString *, IP, a0) + M68K_ARG(uint16_t, port, d0) + + return of_socket_address_parse_ipv4(IP, port); +} + +of_socket_address_t __saveds +glue_of_socket_address_parse_ipv6 PPC_PARAMS(OFString *IP, uint16_t port) +{ + M68K_ARG(OFString *, IP, a0) + M68K_ARG(uint16_t, port, d0) + + return of_socket_address_parse_ipv6(IP, port); +} + +of_socket_address_t __saveds +glue_of_socket_address_ipx PPC_PARAMS(const unsigned char *node, + uint32_t network, uint16_t port) +{ + M68K_ARG(const unsigned char *, node, a0) + M68K_ARG(uint32_t, network, d0) + M68K_ARG(uint16_t, port, d1) + + return of_socket_address_ipx(node, network, port); +} + +bool __saveds +glue_of_socket_address_equal PPC_PARAMS(const of_socket_address_t *address1, + const of_socket_address_t *address2) +{ + M68K_ARG(const of_socket_address_t *, address1, a0) + M68K_ARG(const of_socket_address_t *, address2, a1) + + return of_socket_address_equal(address1, address2); +} + +uint32_t __saveds +glue_of_socket_address_hash PPC_PARAMS(const of_socket_address_t *address) +{ + M68K_ARG(const of_socket_address_t *, address, a0) + + return of_socket_address_hash(address); +} + +OFString *__saveds +glue_of_socket_address_ip_string PPC_PARAMS(const of_socket_address_t *address, + uint16_t *port) +{ + M68K_ARG(const of_socket_address_t *, address, a0) + M68K_ARG(uint16_t *, port, a1) + + return of_socket_address_ip_string(address, port); +} + +void __saveds +glue_of_socket_address_set_port PPC_PARAMS(of_socket_address_t *address, + uint16_t port) +{ + M68K_ARG(of_socket_address_t *, address, a0) + M68K_ARG(uint16_t, port, d0) + + of_socket_address_set_port(address, port); +} + +uint16_t __saveds +glue_of_socket_address_get_port PPC_PARAMS(const of_socket_address_t *address) +{ + M68K_ARG(const of_socket_address_t *, address, a0) + + return of_socket_address_get_port(address); +} + +void __saveds +glue_of_socket_address_set_ipx_network PPC_PARAMS(of_socket_address_t *address, + uint32_t network) +{ + M68K_ARG(of_socket_address_t *, address, a0) + M68K_ARG(uint32_t, network, d0) + + of_socket_address_set_ipx_network(address, network); +} + +uint32_t __saveds +glue_of_socket_address_get_ipx_network PPC_PARAMS( + const of_socket_address_t *address) +{ + M68K_ARG(const of_socket_address_t *, address, a0) + + return of_socket_address_get_ipx_network(address); +} + +void __saveds +glue_of_socket_address_set_ipx_node PPC_PARAMS(of_socket_address_t *address, + const unsigned char *node) +{ + M68K_ARG(of_socket_address_t *, address, a0) + M68K_ARG(const unsigned char *, node, a1) + + of_socket_address_set_ipx_node(address, node); +} + +void __saveds +glue_of_socket_address_get_ipx_node PPC_PARAMS( + const of_socket_address_t *address, unsigned char *node) +{ + M68K_ARG(const of_socket_address_t *, address, a0) + M68K_ARG(unsigned char *, node, a1) + + of_socket_address_get_ipx_node(address, node); +} Index: src/amiga-library.m ================================================================== --- src/amiga-library.m +++ src/amiga-library.m @@ -20,12 +20,16 @@ #include #include #include #include +#import "OFString.h" +#import "OFHTTPRequest.h" + #import "amiga-library.h" #import "macros.h" +#import "socket.h" #define CONCAT_VERSION2(major, minor) #major "." #minor #define CONCAT_VERSION(major, minor) CONCAT_VERSION2(major, minor) #define VERSION_STRING CONCAT_VERSION(OBJFW_LIB_MAJOR, OBJFW_LIB_MINOR) @@ -63,10 +67,35 @@ extern void __register_frame_info(const void *, void *); extern void *__deregister_frame_info(const void *); #endif extern bool glue_of_init(void); +extern int glue_of_application_main(void); +extern const char *glue_of_http_request_method_to_string(void); +extern of_http_request_method_t glue_of_http_request_method_from_string(void); +extern OFString *glue_of_http_status_code_to_string(void); +extern size_t glue_of_sizeof_type_encoding(void); +extern size_t glue_of_alignof_type_encoding(void); +extern void glue_of_logv(void); +extern OFString *glue_of_zip_archive_entry_version_to_string(void); +extern OFString *glue_of_zip_archive_entry_compression_method_to_string(void); +extern size_t glue_of_zip_archive_entry_extra_field_find(void); +extern void glue_of_pbkdf2(void); +extern void glue_of_scrypt(void); +extern of_socket_address_t glue_of_socket_address_parse_ip(void); +extern of_socket_address_t glue_of_socket_address_parse_ipv4(void); +extern of_socket_address_t glue_of_socket_address_parse_ipv6(void); +extern of_socket_address_t glue_of_socket_address_ipx(void); +extern bool glue_of_socket_address_equal(void); +extern uint32_t glue_of_socket_address_hash(void); +extern OFString *glue_of_socket_address_ip_string(void); +extern void glue_of_socket_address_set_port(void); +extern uint16_t glue_of_socket_address_get_port(void); +extern void glue_of_socket_address_set_ipx_network(void); +extern uint32_t glue_of_socket_address_get_ipx_network(void); +extern void glue_of_socket_address_set_ipx_node(void); +extern void glue_of_socket_address_get_ipx_node(void); #ifdef OF_AMIGAOS_M68K void __init_eh(void) { @@ -581,10 +610,35 @@ #ifdef OF_MORPHOS (CONST_APTR)-1, (CONST_APTR)FUNCARRAY_32BIT_SYSTEMV, #endif (CONST_APTR)glue_of_init, + (CONST_APTR)glue_of_application_main, + (CONST_APTR)glue_of_http_request_method_to_string, + (CONST_APTR)glue_of_http_request_method_from_string, + (CONST_APTR)glue_of_http_status_code_to_string, + (CONST_APTR)glue_of_sizeof_type_encoding, + (CONST_APTR)glue_of_alignof_type_encoding, + (CONST_APTR)glue_of_logv, + (CONST_APTR)glue_of_zip_archive_entry_version_to_string, + (CONST_APTR)glue_of_zip_archive_entry_compression_method_to_string, + (CONST_APTR)glue_of_zip_archive_entry_extra_field_find, + (CONST_APTR)glue_of_pbkdf2, + (CONST_APTR)glue_of_scrypt, + (CONST_APTR)glue_of_socket_address_parse_ip, + (CONST_APTR)glue_of_socket_address_parse_ipv4, + (CONST_APTR)glue_of_socket_address_parse_ipv6, + (CONST_APTR)glue_of_socket_address_ipx, + (CONST_APTR)glue_of_socket_address_equal, + (CONST_APTR)glue_of_socket_address_hash, + (CONST_APTR)glue_of_socket_address_ip_string, + (CONST_APTR)glue_of_socket_address_set_port, + (CONST_APTR)glue_of_socket_address_get_port, + (CONST_APTR)glue_of_socket_address_set_ipx_network, + (CONST_APTR)glue_of_socket_address_get_ipx_network, + (CONST_APTR)glue_of_socket_address_set_ipx_node, + (CONST_APTR)glue_of_socket_address_get_ipx_node, #ifdef OF_MORPHOS (CONST_APTR)FUNCARRAY_END #endif }; #pragma GCC diagnostic pop Index: src/amigaos3.sfd ================================================================== --- src/amigaos3.sfd +++ src/amigaos3.sfd @@ -9,11 +9,11 @@ const char *_Nullable glue_of_http_request_method_to_string(of_http_request_method_t method)(d0) of_http_request_method_t glue_of_http_request_method_from_string(OFString *string)(a0) OFString *_Nonnull glue_of_http_status_code_to_string(short code)(d0) size_t glue_of_sizeof_type_encoding(const char *type)(a0) size_t glue_of_alignof_type_encoding(const char *type)(a0) -void glue_of_logv(OFConstantString *format, va_list args)(a0,a1) +void glue_of_logv(OFConstantString *format, va_list arguments)(a0,a1) OFString *_Nonnull glue_of_zip_archive_entry_version_to_string(uint16_t version)(d0) OFString *_Nonnull glue_of_zip_archive_entry_compression_method_to_string(uint16_t compressionMethod)(d0) size_t glue_of_zip_archive_entry_extra_field_find(OFData *extraField, uint16_t tag, uint16_t *size)(a0,d0,a1) void glue_of_pbkdf2(OFHMAC *HMAC, size_t iterations, const unsigned char *salt, size_t saltLength, const char *password, size_t passwordLength, unsigned char *key, size_t keyLength, bool allowsSwappableMemory)(a0,d0,a1,d1,a2,d2,a3,d3,d4) void glue_of_scrypt(size_t blockSize, size_t costFactor, size_t parallelization, const unsigned char *salt, size_t saltLength, const char *password, size_t passwordLength, unsigned char *key, size_t keyLength, bool allowsSwappableMemory)(d0,d1,d2,a0,d3,a1,d4,a2,d5,d6)