/*
* Type for wide character dirent structure.
+ * Only d_name is defined by POSIX.
*/
typedef struct smb_wdirent {
- SMB_INO_T d_ino;
- SMB_OFF_T d_off;
- unsigned short d_reclen;
wpstring d_name;
} SMB_STRUCT_WDIRENT;
if(!dirval)
return NULL;
- retval.d_ino = (SMB_INO_T)dirval->d_ino;
- retval.d_off = (SMB_OFF_T)dirval->d_off;
+ /*
+ * The only POSIX defined member of this struct is d_name.
+ */
+
unix_to_unicode(retval.d_name,dirval->d_name,sizeof(retval.d_name));
- retval.d_reclen = wstrlen(retval.d_name);
return &retval;
}
return NULL;
}
+
+/*******************************************************************
+ Duplicate a ucs2 string.
+********************************************************************/
+
+smb_ucs2_t *wstrdup(const smb_ucs2_t *s)
+{
+ size_t newlen = (wstrlen(s)*sizeof(smb_ucs2_t)) + 1;
+ smb_ucs2_t *newstr = (smb_ucs2_t *)malloc(newlen);
+ if (newstr == NULL)
+ return NULL;
+ safe_wstrcpy(newstr, s, newlen);
+ return newstr;
+}