The branch, v3-2-test has been updated
       via  0bfea7259e4091c6d914528a0e65fc10d8a56fb8 (commit)
       via  a8948e0727b100945ab730d4d144ccbe219bbc94 (commit)
       via  b6d1d2428866712a550a354732e2386b4f87b67b (commit)
       via  99c59e809ef3c5abcdfb796d50be7c40f7033787 (commit)
      from  ced0c42f055a672f6b4ab6ba809b0f63c83b431e (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-2-test


- Log -----------------------------------------------------------------
commit 0bfea7259e4091c6d914528a0e65fc10d8a56fb8
Author: Volker Lendecke <[EMAIL PROTECTED]>
Date:   Sun Dec 16 00:25:49 2007 +0100

    get rid of doschar_table[]
    
    If I'm not completely blind, then check_dos_char is *only* used in the case
    when we can't mmap() valid.dat. To me this looks as if we initialize the 
65536
    bits in doschar_table[] with check_dos_char_slowly, use it once to 
initialize
    valid_table[] and *never* use them again. I think there's no point in 
keeping
    these 8k of modified memory around for an unlikely case (no "valid.dat") and
    even that only to use it exactly once.

commit a8948e0727b100945ab730d4d144ccbe219bbc94
Author: Volker Lendecke <[EMAIL PROTECTED]>
Date:   Sun Dec 16 00:19:42 2007 +0100

    Tiny fixes to init_valid_table()

commit b6d1d2428866712a550a354732e2386b4f87b67b
Author: Volker Lendecke <[EMAIL PROTECTED]>
Date:   Sun Dec 16 00:17:41 2007 +0100

    Make init_doschar_table() static
    
    It's only called directly before init_valid_table() anyway, so move it 
there.

commit 99c59e809ef3c5abcdfb796d50be7c40f7033787
Author: Volker Lendecke <[EMAIL PROTECTED]>
Date:   Sun Dec 16 00:15:34 2007 +0100

    Make check_dos_char static
    
    It's only called in t_doschar, a pretty bogus test program that is not 
compiled
    by default

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

Summary of changes:
 source/lib/charcnv.c     |    1 -
 source/lib/util_unistr.c |   60 ++++-----------------------------------------
 2 files changed, 6 insertions(+), 55 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source/lib/charcnv.c b/source/lib/charcnv.c
index 2515e6c..8a00b23 100644
--- a/source/lib/charcnv.c
+++ b/source/lib/charcnv.c
@@ -178,7 +178,6 @@ void init_iconv(void)
                 * codepage changes? */
                /* XXX: Is the did_reload test too strict? */
                conv_silent = True;
-               init_doschar_table();
                init_valid_table();
                conv_silent = False;
        }
diff --git a/source/lib/util_unistr.c b/source/lib/util_unistr.c
index 49b0b81..84ee673 100644
--- a/source/lib/util_unistr.c
+++ b/source/lib/util_unistr.c
@@ -35,14 +35,6 @@ static bool lowcase_table_use_unmap;
 static bool valid_table_use_unmap;
 
 /**
- * This table says which Unicode characters are valid dos
- * characters.
- *
- * Each value is just a single bit.
- **/
-static uint8 doschar_table[8192]; /* 65536 characters / 8 bits/byte */
-
-/**
  * Destroy global objects allocated by load_case_tables()
  **/
 void gfree_case_tables(void)
@@ -153,21 +145,6 @@ void load_case_tables(void)
        TALLOC_FREE(frame);
 }
 
-/*
-  see if a ucs2 character can be mapped correctly to a dos character
-  and mapped back to the same character in ucs2
-*/
-
-int check_dos_char(smb_ucs2_t c)
-{
-       lazy_initialize_conv();
-
-       /* Find the right byte, and right bit within the byte; return
-        * 1 or 0 */
-       return (doschar_table[(c & 0xffff) / 8] & (1 << (c & 7))) != 0;
-}
-
-
 static int check_dos_char_slowly(smb_ucs2_t c)
 {
        char buf[10];
@@ -185,33 +162,6 @@ static int check_dos_char_slowly(smb_ucs2_t c)
        return (c == c2);
 }
 
-
-/**
- * Fill out doschar table the hard way, by examining each character
- **/
-
-void init_doschar_table(void)
-{
-       int i, j, byteval;
-
-       /* For each byte of packed table */
-       
-       for (i = 0; i <= 0xffff; i += 8) {
-               byteval = 0;
-               for (j = 0; j <= 7; j++) {
-                       smb_ucs2_t c;
-
-                       c = i + j;
-                       
-                       if (check_dos_char_slowly(c)) {
-                               byteval |= 1 << j;
-                       }
-               }
-               doschar_table[i/8] = byteval;
-       }
-}
-
-
 /**
  * Load the valid character map table from <tt>valid.dat</tt> or
  * create from the configured codepage.
@@ -245,22 +195,24 @@ void init_valid_table(void)
         * It might need to be regenerated if the code page changed.
         * We know that we're not using a mapped file, so we can
         * free() the old one. */
-       if (valid_table) 
-               SAFE_FREE(valid_table);
+       SAFE_FREE(valid_table);
 
        /* use free rather than unmap */
        valid_table_use_unmap = False;
 
        DEBUG(2,("creating default valid table\n"));
        valid_table = (uint8 *)SMB_MALLOC(0x10000);
+       SMB_ASSERT(valid_table != NULL);
        for (i=0;i<128;i++) {
                valid_table[i] = isalnum(i) || strchr(allowed,i);
        }
-       
+
+       lazy_initialize_conv();
+
        for (;i<0x10000;i++) {
                smb_ucs2_t c;
                SSVAL(&c, 0, i);
-               valid_table[i] = check_dos_char(c);
+               valid_table[i] = check_dos_char_slowly(c);
        }
 }
 


-- 
Samba Shared Repository

Reply via email to