include/includes.h: Trimmed down unicode directory entry to be POSIX complient.
authorJeremy Allison <jra@samba.org>
Wed, 22 Dec 1999 18:46:05 +0000 (18:46 +0000)
committerJeremy Allison <jra@samba.org>
Wed, 22 Dec 1999 18:46:05 +0000 (18:46 +0000)
lib/system.c: Trimmed down unicode directory entry to be POSIX complient.
lib/util_unistr.c: Added wstrdup().
Jeremy.
(This used to be commit ca64f4ab00c6d54022ba9bd4b869523566a242d7)

source3/include/includes.h
source3/lib/system.c
source3/lib/util_unistr.c

index b42f5e0115276658ddc637e41158a6ab6ca43826..0e8505daecfd5b6feae5fafe6b934cf8a1706bc0 100644 (file)
@@ -651,12 +651,10 @@ extern int errno;
 
 /*
  * 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;
 
index 710f30bac8b40ac495241d42fe028986313671e9..d1467499747fd59c88376433ce1a0ac86f8f87c2 100644 (file)
@@ -802,10 +802,11 @@ SMB_STRUCT_WDIRENT *wsys_readdir(DIR *dirp)
        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;
 }
index 00f6ba48973d8e12a68901657771c227cf841a7f..cdeaefce7a302a37151f6bdb6ce9d5b9e2265062 100644 (file)
@@ -891,3 +891,17 @@ smb_ucs2_t *wstrtok(smb_ucs2_t *s1, const smb_ucs2_t *s2)
 
        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;
+}