コード例 #1
0
void unistr2_to_ascii(char *dest, const UNISTR2 *str, size_t maxlen)
{
	if (str == NULL) {
		*dest='\0';
		return;
	}
	pull_ucs2(NULL, dest, str->buffer, maxlen, str->uni_str_len*2, STR_NOALIGN);
}
コード例 #2
0
ファイル: util_unistr.c プロジェクト: Nymphetaminer/dsl-n55u
/*******************************************************************
 Return a DOS codepage version of a little-endian unicode string.
 len is the filename length (ignoring any terminating zero) in uin16
 units. Always null terminates.
 Hack alert: uses fixed buffer(s).
********************************************************************/
char *dos_unistrn2(const uint16 *src, int len)
{
	static char lbufs[8][MAXUNI];
	static int nexti;
	char *lbuf = lbufs[nexti];
	nexti = (nexti+1)%8;
	pull_ucs2(NULL, lbuf, src, MAXUNI-3, len*2, STR_NOALIGN);
	return lbuf;
}
コード例 #3
0
ファイル: util_unistr.c プロジェクト: Nymphetaminer/dsl-n55u
/* Copy a string from little-endian or big-endian unicode source (depending
 * on flags) to internal samba format destination
 */ 
int rpcstr_pull(char* dest, void *src, int dest_len, int src_len, int flags)
{
	if (!src) {
		dest[0] = 0;
		return 0;
	}
	if(dest_len==-1) dest_len=MAXUNI-3;
	return pull_ucs2(NULL, dest, src, dest_len, src_len, flags|STR_UNICODE|STR_NOALIGN);
}
コード例 #4
0
ファイル: util_unistr.c プロジェクト: Nymphetaminer/dsl-n55u
/*******************************************************************
 duplicate a UNISTR2 string into a null terminated char*
 using a talloc context
********************************************************************/
char *unistr2_tdup(TALLOC_CTX *ctx, const UNISTR2 *str)
{
	char *s;
	int maxlen = (str->uni_str_len+1)*4;
	if (!str->buffer) return NULL;
	s = (char *)talloc(ctx, maxlen); /* convervative */
	if (!s) return NULL;
	pull_ucs2(NULL, s, str->buffer, maxlen, str->uni_str_len*2, 
		  STR_NOALIGN);
	return s;
}
コード例 #5
0
char *rpcstr_pull_unistr2_talloc(TALLOC_CTX *mem_ctx, const UNISTR2 *src)
{
	pstring tmp;
	size_t result;

	result = pull_ucs2(NULL, tmp, src->buffer, sizeof(tmp),
			   src->uni_str_len * 2, 0);
	if (result == (size_t)-1) {
		return NULL;
	}

	return talloc_strdup(mem_ctx, tmp);
}
コード例 #6
0
ファイル: charcnv.c プロジェクト: AllardJ/Tomato
size_t pull_string_fn(const char *function, unsigned int line, const void *base_ptr, char *dest, const void *src, size_t dest_len, size_t src_len, int flags)
{
#ifdef DEVELOPER
	if (dest_len != (size_t)-1)
		clobber_region(function, line, dest, dest_len);
#endif

	if (!(flags & STR_ASCII) && \
	    ((flags & STR_UNICODE || \
	      (SVAL(base_ptr, smb_flg2) & FLAGS2_UNICODE_STRINGS)))) {
		return pull_ucs2(base_ptr, dest, src, dest_len, src_len, flags);
	}
	return pull_ascii(dest, src, dest_len, src_len, flags);
}
コード例 #7
0
int rpcstr_pull_unistr2_fstring(char *dest, UNISTR2 *src)
{
        return pull_ucs2(NULL, dest, src->buffer, sizeof(fstring),
                         src->uni_str_len * 2, 0);
}
コード例 #8
0
ファイル: charcnv.c プロジェクト: AllardJ/Tomato
size_t pull_ucs2_fstring(char *dest, const void *src)
{
	return pull_ucs2(NULL, dest, src, sizeof(fstring), -1, STR_TERMINATE);
}