| |
| |
| |
| |
| |
| |
| #include <ntapi/ntapi.h> |
| |
| extern const ntapi_vtbl * ptyc_ntapi; |
| |
| void * ptyc_memcpy(void * dst, const void * src, size_t n) |
| { |
| return ptyc_ntapi->tt_generic_memcpy(dst,src,n); |
| } |
| |
| void * ptyc_memset(void * ch, int c, size_t n) |
| { |
| return ptyc_ntapi->tt_generic_memset(ch,c,n); |
| } |
| |
| char * ptyc_strcpy(char * dst, const char * src) |
| { |
| return ptyc_ntapi->tt_generic_memcpy( |
| dst,src, |
| ptyc_ntapi->tt_string_null_offset_multibyte(src)); |
| } |
| |
| size_t ptyc_strlen(const char * ch) |
| { |
| return ptyc_ntapi->tt_string_null_offset_multibyte(ch); |
| } |
| |
| int ptyc_strcmp(const char * a, const char * b) |
| { |
| return ptyc_ntapi->tt_strcmp_multibyte(a,b); |
| } |
| |
| int ptyc_strncmp(const char * a, const char * b, size_t n) |
| { |
| return ptyc_ntapi->tt_strncmp_multibyte(a,b,n); |
| } |
| |
| char * ptyc_strchr(const char * ch, int c) |
| { |
| for (; *ch; ch++) |
| if (*ch == c) |
| return (char *)ch; |
| return 0; |
| } |
| |
| char * ptyc_strrchr(const char * ch, int c) |
| { |
| const char * base; |
| |
| base = ch; |
| ch += ptyc_ntapi->tt_string_null_offset_multibyte(ch); |
| |
| for (; ch >= base; ch--) |
| if (*ch == c) |
| return (char *)ch; |
| return 0; |
| } |
| |
| #ifdef PTYC_EXPORT |
| int __stdcall ptycon_entry_point(void * hinstance, uint32_t reason, void * reserved) |
| { |
| (void)hinstance; |
| (void)reason; |
| (void)reserved; |
| |
| return 1; |
| } |
| #endif |