libnjb  2.2.7
Macros | Functions | Variables
unicode.c File Reference
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include "libnjb.h"
#include "protocol.h"
#include "protocol3.h"
#include "unicode.h"
#include "njb_error.h"
#include "usb_io.h"
#include "ioutil.h"
#include "defs.h"
#include "base.h"

Macros

#define MAX_STRING_LENGTH   512
 

Functions

void njb_set_unicode (int flag)
 
int ucs2strlen (const unsigned char *unicstr)
 
char * strtoutf8 (const unsigned char *str)
 
char * utf8tostr (const unsigned char *str)
 
char * ucs2tostr (const unsigned char *unicstr)
 
unsigned char * strtoucs2 (const unsigned char *str)
 

Variables

int __sub_depth
 
int njb_unicode_flag = NJB_UC_8859
 

Detailed Description

This file contains general Unicode string manipulation functions. It mainly consist of functions for converting between UCS-2 (used on the devices), UTF-8 (used by several applications) and ISO 8859-1 / Codepage 1252 (fallback).

Function Documentation

◆ njb_set_unicode()

void njb_set_unicode ( int  flag)

This flag determines whether to use ISO 8859-1 / codepage 1252 (default) or unicode UTF-8 for ALL strings sent into and out of libnjb, for ALL sessions and devices.

Parameters
flag0 for ISO 8859-1 / codepage 1252 or 1 for Unicode UTF-8.

References njb_unicode_flag.

Referenced by NJB_Set_Unicode().

◆ strtoucs2()

unsigned char* strtoucs2 ( const unsigned char *  str)

Convert a simple ISO 8859-1 or a Unicode UTF8 string (depending on library Unicode flag) to a unicode UCS-2 string.

Parameters
strthe ISO 8859-1 or UTF-8 string to conver
Returns
a pointer to a newly allocated UCS-2 string

References NJB_UC_UTF8, and njb_unicode_flag.

Referenced by datafile_pack3(), new_folder_pack3(), and songid_pack().

◆ strtoutf8()

char* strtoutf8 ( const unsigned char *  str)

This function converts an ordinary ISO 8859-1 string to a unicode UTF-8 string

Parameters
strthe ISO 8859-1 string to convert
Returns
a newly allocated UTF-8 encoded string with the same content. Should be freed after use.

Referenced by songid_unpack().

◆ ucs2strlen()

int ucs2strlen ( const unsigned char *  unicstr)

Gets the length (in characters, not bytes) of a unicode UCS-2 string, eg a string which physically is 0x00 0x41 0x00 0x00 will return a value of 1.

Parameters
unicstra UCS-2 Unicode string
Returns
the length of the string, in number of characters. If you want to know the length in bytes, multiply this by two and add two (for zero terminator).

Referenced by njb3_create_playlist(), njb3_update_string_frame(), and songid_pack().

◆ ucs2tostr()

char* ucs2tostr ( const unsigned char *  unicstr)

Converts a Unicode UCS-2 2-byte string to a common ISO 8859-1 string quick and dirty (japanese unicodes etc, that use all 16 bits will fail miserably)

Parameters
unicstrthe UCS-2 unicode string to convert
Returns
a newly allocated ISO 8859-1 string that tries to resemble the UCS-2 string

References NJB_UC_UTF8, and njb_unicode_flag.

◆ utf8tostr()

char* utf8tostr ( const unsigned char *  str)

This function approximates an ISO 8859-1 string from a UTF-8 string, leaving out untranslatable characters

Parameters
strthe UTF-8 string to use as indata
Returns
a newly allocated ISO 8859-1 string which is as close a possible to the UTF-8 string.

Referenced by songid_pack().

Variable Documentation

◆ __sub_depth

int __sub_depth
extern

The current subroutine depth for all of libnjb (global)

◆ njb_unicode_flag

int njb_unicode_flag = NJB_UC_8859

A flag for if unicode is used or not (global)

Referenced by njb_set_unicode(), songid_pack(), songid_unpack(), strtoucs2(), and ucs2tostr().