Current section
Files
Jump to
Current section
Files
c_src/common.c
#include "types.h"
#include "common.h"
int isNilAtom(ErlNifEnv *env, ERL_NIF_TERM term) {
if(!enif_is_atom(env, term)) {
return 0;
}
char atom[4] = {0};
if(!enif_get_atom(env, term, atom, sizeof(atom), ERL_NIF_LATIN1)) {
return 0;
}
return strcmp(atom, "nil") == 0;
}
unsigned char *createNullTermMbString(const ErlNifBinary binary) {
unsigned char *pt = malloc(binary.size + 1);
if(pt == NULL) {
return NULL;
}
pt[binary.size] = '\0';
memcpy(pt, binary.data, binary.size);
return pt;
}
ErlNifBinary convertWcharToMbBinary(const wchar_t *wstr) {
size_t mb_byte = wcstombs(NULL, wstr, wcslen(wstr));
ErlNifBinary ret;
if(!enif_alloc_binary(mb_byte, &ret)) {
ret.data = NULL;
ret.size = 0;
return ret;
}
if((size_t)-1 == wcstombs((char*)ret.data, wstr, mb_byte)) {
ret.data = NULL;
ret.size = 0;
}
return ret;
}