The branch, master has been updated
       via  93d57df vfs_catia: add my copyright
       via  4b4f8f3 vfs_catia: add a sample for filename mapping to the manual 
page
       via  5f38125 vfs_catia: fix the completely outdated manual page
       via  f7a63dc vfs_catia: fix the translation to "vfs_translate_to_windows"
       via  bb680ef vfs_catia: add debug class for that module
      from  33a7296 docs: Add documentation for osName and osVer

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 93d57dfbaf01c23fe8de5e9c8f076718b4cf566f
Author: Guenter Kukkukk <ku...@samba.org>
Date:   Fri Mar 1 00:58:05 2013 +0100

    vfs_catia: add my copyright
    
    Signed-off-by: Guenter Kukkukk <ku...@samba.org>
    Reviewed-by: Jeremy Allison <j...@samba.org>
    
    Autobuild-User(master): Jeremy Allison <j...@samba.org>
    Autobuild-Date(master): Thu Mar  7 22:24:47 CET 2013 on sn-devel-104

commit 4b4f8f3a2994f282bd3bd75d4f1fb83c82169e9a
Author: Guenter Kukkukk <ku...@samba.org>
Date:   Fri Mar 1 00:36:08 2013 +0100

    vfs_catia: add a sample for filename mapping to the manual page
    
    Signed-off-by: Guenter Kukkukk <ku...@samba.org>
    Reviewed-by: Jeremy Allison <j...@samba.org>

commit 5f38125c147c329da1e4e853b99022f1a3e77ba2
Author: Guenter Kukkukk <ku...@samba.org>
Date:   Thu Feb 28 06:12:36 2013 +0100

    vfs_catia: fix the completely outdated manual page
    
    The complete rework around 3.5.0 was not even mentioned somewhere.
    (i was not able to find any info about that major change)
    
    Signed-off-by: Guenter Kukkukk <ku...@samba.org>
    Reviewed-by: Jeremy Allison <j...@samba.org>

commit f7a63dc3ae784254a289348139d279f87b819ee1
Author: Guenter Kukkukk <ku...@samba.org>
Date:   Wed Feb 27 05:50:52 2013 +0100

    vfs_catia: fix the translation to "vfs_translate_to_windows"
    
    THANKS to an IRC user (Raimund ?) who asked for a char mapping possibility.
    I suggested vfs_catia - but it did not work!
    Hopefully now it will. :-)
    
    Signed-off-by: Guenter Kukkukk <ku...@samba.org>
    Reviewed-by: Jeremy Allison <j...@samba.org>

commit bb680efb0a40ecfe86206acef379e5f9e09ea5bf
Author: Guenter Kukkukk <ku...@samba.org>
Date:   Wed Feb 27 05:34:05 2013 +0100

    vfs_catia: add debug class for that module
    
    Signed-off-by: Guenter Kukkukk <ku...@samba.org>
    Reviewed-by: Jeremy Allison <j...@samba.org>

-----------------------------------------------------------------------

Summary of changes:
 docs-xml/manpages/vfs_catia.8.xml |   66 +++++++++++++++++++++++++++++++++++-
 source3/modules/vfs_catia.c       |   35 +++++++++++++++++---
 2 files changed, 94 insertions(+), 7 deletions(-)


Changeset truncated at 500 lines:

diff --git a/docs-xml/manpages/vfs_catia.8.xml 
b/docs-xml/manpages/vfs_catia.8.xml
index a5f6233..b18dc48 100644
--- a/docs-xml/manpages/vfs_catia.8.xml
+++ b/docs-xml/manpages/vfs_catia.8.xml
@@ -31,18 +31,31 @@
 
        <para>The Catia CAD package commonly creates filenames that
        use characters that are illegal in CIFS filenames. The
-       <command>vfs_catia</command> VFS module implements a fixed character
+       <command>vfs_catia</command> VFS module implements a character
        mapping so that these files can be shared with CIFS clients.
        </para>
 
        <para>This module is stackable.</para>
 
+       <para>Up to samba version 3.4.x a fixed character mapping was used.
+       The invalid windows characters  \ / : * ? " &lt; &gt; | and the blank
+       character were mapped in a hardcoded way.
+       </para>
+
+       <para>Starting with samba-3.5.0 a more flexible mapping was introduced.
+       The new parameter "catia:mappings" now specifies the mapping on a char 
by char
+       basis using the notation: unix hex char 0x.. : windows hex char 0x..
+       Multiple character mappings are separated by a comma.
+       </para>
+
+
 </refsect1>
 
 
 <refsect1>
        <title>EXAMPLES</title>
 
+       <para>Samba versions up to 3.4.x:</para>
        <para>Map Catia filenames on the [CAD] share:</para>
 
 <programlisting>
@@ -51,12 +64,60 @@
        <smbconfoption name="vfs objects">catia</smbconfoption>
 </programlisting>
 
+       <para>Samba versions 3.5.0 and later:</para>
+       <para>Map Catia filenames on the [CAD] share:</para>
+
+<programlisting>
+        <smbconfsection name="[CAD]"/>
+       <smbconfoption name="path">/data/cad</smbconfoption>
+       <smbconfoption name="vfs objects">catia</smbconfoption>
+       <smbconfoption name="catia:mappings">0x22:0xa8</smbconfoption>
+</programlisting>
+
+        <para>To get the full formerly fixed mappings:</para>
+<programlisting>
+        <smbconfsection name="[CAD]"/>
+       <smbconfoption name="path">/data/cad</smbconfoption>
+       <smbconfoption name="vfs objects">catia</smbconfoption>
+       <smbconfoption 
name="catia:mappings">0x22:0xa8,0x2a:0xa4,0x2f:0xf8,0x3a:0xf7,0x3c:0xab,0x3e:0xbb,0x3f:0xbf,0x5c:0xff,0x7c:0xa6,0x20:0xb1</smbconfoption>
+</programlisting>
+
+        <para>Unix filename to be translated (Note that the path delimiter "/" 
is not used here):
+       </para>
+       <para>a\a:a*a?a"a&lt;a&gt;a|a a</para>
+
+       <para>Resulting windows filename:</para>
+
+       
<para>a&#x00ff;a&#x00f7;a&#x00a4;a&#x00bf;a&#x00a8;a&#x00ab;a&#x00bb;a&#x00a6;a&#x00b1;a
+       </para>
+
+        <para>Note that the character mapping must work in BOTH directions
+       (unix -&gt; windows and windows -&gt; unix) to get unique and existing 
file names!
+       </para>
+
+       <para>A NOT working example:</para>
+
+<programlisting>
+        <smbconfsection name="[CAD]"/>
+       <smbconfoption name="path">/data/cad</smbconfoption>
+       <smbconfoption name="vfs objects">catia</smbconfoption>
+       <smbconfoption name="catia:mappings">0x3a:0x5f</smbconfoption>
+</programlisting>
+
+         <para>Here the colon ":" is mapped to the underscore "_".</para>
+        <para>Assuming a unix filename "a:should_work", which is well 
translated
+        to windows as "a_should_work".</para>
+        <para>BUT the reverse mapping from windows "a_should_work" to unix
+        will result in "a:should:work" - something like "file not found"
+        will be returned.
+        </para>
+
 </refsect1>
 
 <refsect1>
        <title>VERSION</title>
 
-       <para>This man page is correct for version 3.0.25 of the Samba suite.
+       <para>This man page is correct for all versions up to 4.0.3 of the 
Samba suite.
        </para>
 </refsect1>
 
@@ -67,6 +128,7 @@
        were created by Andrew Tridgell. Samba is now developed
        by the Samba Team as an Open Source project similar
        to the way the Linux kernel is developed.</para>
+       <para>New version written by Guenter Kukkukk ku...@samba.org</para>
 
 </refsect1>
 
diff --git a/source3/modules/vfs_catia.c b/source3/modules/vfs_catia.c
index b9f241e..f7c0e7b 100644
--- a/source3/modules/vfs_catia.c
+++ b/source3/modules/vfs_catia.c
@@ -10,6 +10,7 @@
  *
  * Copyright (C) Volker Lendecke, 2005
  * Copyright (C) Aravind Srinivasan, 2009
+ * Copyright (C) Guenter Kukkukk, 2013
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -29,6 +30,11 @@
 #include "includes.h"
 #include "smbd/smbd.h"
 
+static int vfs_catia_debug_level = DBGC_VFS;
+
+#undef DBGC_CLASS
+#define DBGC_CLASS vfs_catia_debug_level
+
 #define GLOBAL_SNUM     0xFFFFFFF
 #define MAP_SIZE        0xFF
 #define MAP_NUM         0x101 /* max unicode charval / MAP_SIZE */
@@ -295,7 +301,7 @@ static NTSTATUS catia_translate_name(struct 
vfs_handle_struct *handle,
 {
        char *name = NULL;
        char *mapped_name;
-       NTSTATUS ret;
+       NTSTATUS status, ret;
 
        /*
         * Copy the supplied name and free the memory for mapped_name,
@@ -308,12 +314,12 @@ static NTSTATUS catia_translate_name(struct 
vfs_handle_struct *handle,
                errno = ENOMEM;
                return NT_STATUS_NO_MEMORY;
        }
-       ret = catia_string_replace_allocate(handle->conn, name,
+       status = catia_string_replace_allocate(handle->conn, name,
                        &mapped_name, direction);
 
        TALLOC_FREE(name);
-       if (!NT_STATUS_IS_OK(ret)) {
-               return ret;
+       if (!NT_STATUS_IS_OK(status)) {
+               return status;
        }
 
        ret = SMB_VFS_NEXT_TRANSLATE_NAME(handle, mapped_name, direction,
@@ -321,6 +327,8 @@ static NTSTATUS catia_translate_name(struct 
vfs_handle_struct *handle,
 
        if (NT_STATUS_EQUAL(ret, NT_STATUS_NONE_MAPPED)) {
                *pmapped_name = talloc_move(mem_ctx, &mapped_name);
+               /* we need to return the former translation result here */
+               ret = status;
        } else {
                TALLOC_FREE(mapped_name);
        }
@@ -929,6 +937,23 @@ static struct vfs_fn_pointers vfs_catia_fns = {
 
 NTSTATUS vfs_catia_init(void)
 {
-        return smb_register_vfs(SMB_VFS_INTERFACE_VERSION, "catia",
+       NTSTATUS ret;
+
+        ret = smb_register_vfs(SMB_VFS_INTERFACE_VERSION, "catia",
                                &vfs_catia_fns);
+       if (!NT_STATUS_IS_OK(ret))
+               return ret;
+
+       vfs_catia_debug_level = debug_add_class("catia");
+       if (vfs_catia_debug_level == -1) {
+               vfs_catia_debug_level = DBGC_VFS;
+               DEBUG(0, ("vfs_catia: Couldn't register custom debugging "
+                         "class!\n"));
+       } else {
+               DEBUG(10, ("vfs_catia: Debug class number of "
+                          "'catia': %d\n", vfs_catia_debug_level));
+       }
+
+       return ret;
+
 }


-- 
Samba Shared Repository

Reply via email to