Print this page
NEX-19025 CIFS gets confused with filenames containing enhanced Unicode
Reviewed by: Matt Barden <matt.barden@nexenta.com>
Reviewed by: Evan Layton <evan.layton@nexenta.com>
and: (fix build, check-rtime)
NEX-4458 Incorrect directory listing response for non-UNICODE clients
Reviewed by: Matt Barden <Matt.Barden@nexenta.com>
Reviewed by: Kevin Crowe <kevin.crowe@nexenta.com>
re #6854 FindFirstFile,FindFirstFileEx,... are not working correctly on Nexenta CIFS-shares
*** 18,28 ****
*
* CDDL HEADER END
*/
/*
* Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
! * Copyright 2012 Nexenta Systems, Inc. All rights reserved.
* Copyright (c) 2017 by Delphix. All rights reserved.
*/
#ifndef _SMBSRV_STRING_H
#define _SMBSRV_STRING_H
--- 18,28 ----
*
* CDDL HEADER END
*/
/*
* Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
! * Copyright 2018 Nexenta Systems, Inc. All rights reserved.
* Copyright (c) 2017 by Delphix. All rights reserved.
*/
#ifndef _SMBSRV_STRING_H
#define _SMBSRV_STRING_H
*** 83,93 ****
} codepage_id_t;
/*
* Maximum number of bytes per multi-byte character.
*/
! #define MTS_MB_CUR_MAX 3
#define MTS_MB_CHAR_MAX MTS_MB_CUR_MAX
typedef uint16_t smb_wchar_t;
/*
--- 83,93 ----
} codepage_id_t;
/*
* Maximum number of bytes per multi-byte character.
*/
! #define MTS_MB_CUR_MAX 4
#define MTS_MB_CHAR_MAX MTS_MB_CUR_MAX
typedef uint16_t smb_wchar_t;
/*
*** 116,127 ****
void smb_codepage_init(void);
void smb_codepage_fini(void);
int smb_isupper(int);
int smb_islower(int);
! int smb_toupper(int);
! int smb_tolower(int);
char *smb_strupr(char *);
char *smb_strlwr(char *);
int smb_isstrupr(const char *);
int smb_isstrlwr(const char *);
int smb_strcasecmp(const char *, const char *, size_t);
--- 116,127 ----
void smb_codepage_init(void);
void smb_codepage_fini(void);
int smb_isupper(int);
int smb_islower(int);
! uint32_t smb_toupper(uint32_t);
! uint32_t smb_tolower(uint32_t);
char *smb_strupr(char *);
char *smb_strlwr(char *);
int smb_isstrupr(const char *);
int smb_isstrlwr(const char *);
int smb_strcasecmp(const char *, const char *, size_t);
*** 128,145 ****
boolean_t smb_match(const char *, const char *, boolean_t);
size_t smb_mbstowcs(smb_wchar_t *, const char *, size_t);
size_t smb_wcstombs(char *, const smb_wchar_t *, size_t);
! int smb_mbtowc(smb_wchar_t *, const char *, size_t);
! int smb_wctomb(char *, smb_wchar_t);
size_t smb_wcequiv_strlen(const char *);
size_t smb_sbequiv_strlen(const char *);
! int smb_stombs(char *, char *, int);
! int smb_mbstos(char *, const char *);
size_t ucstooem(char *, const smb_wchar_t *, size_t, uint32_t);
size_t oemtoucs(smb_wchar_t *, const char *, size_t, uint32_t);
char *strsubst(char *, char, char);
--- 128,145 ----
boolean_t smb_match(const char *, const char *, boolean_t);
size_t smb_mbstowcs(smb_wchar_t *, const char *, size_t);
size_t smb_wcstombs(char *, const smb_wchar_t *, size_t);
! int smb_mbtowc(uint32_t *, const char *, size_t);
! int smb_wctomb(char *, uint32_t);
size_t smb_wcequiv_strlen(const char *);
size_t smb_sbequiv_strlen(const char *);
! int smb_oemtombs(char *, const uint8_t *, int);
! int smb_mbstooem(uint8_t *, const char *, int);
size_t ucstooem(char *, const smb_wchar_t *, size_t, uint32_t);
size_t oemtoucs(smb_wchar_t *, const char *, size_t, uint32_t);
char *strsubst(char *, char, char);