From 87fbb7092b8f8b2f0db0f361c3d625e19de57cd9 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Wed, 4 Jul 2001 07:15:53 +0000 Subject: The big character set handling changeover! This commit gets rid of all our old codepage handling and replaces it with iconv. All internal strings in Samba are now in "unix" charset, which may be multi-byte. See internals.doc and my posting to samba-technical for a more complete explanation. (This used to be commit debb471267960e56005a741817ebd227ecfc512a) --- source3/smbd/mangle.c | 70 ++++----------------------------------------------- 1 file changed, 5 insertions(+), 65 deletions(-) (limited to 'source3/smbd/mangle.c') diff --git a/source3/smbd/mangle.c b/source3/smbd/mangle.c index 61af1f7ded..8df71d4557 100644 --- a/source3/smbd/mangle.c +++ b/source3/smbd/mangle.c @@ -244,7 +244,6 @@ static BOOL is_reserved_msdos( char *fname ) static BOOL is_illegal_name( char *name ) { unsigned char *s; - int skip; if( !name ) return( True ); @@ -255,18 +254,10 @@ static BOOL is_illegal_name( char *name ) s = (unsigned char *)name; while( *s ) { - skip = get_character_len( *s ); - if( skip != 0 ) - { - s += skip; - } - else - { - if( isillegal( *s ) ) + if( *s>0x7F && isillegal( *s ) ) return( True ); else s++; - } } return( False ); @@ -325,7 +316,6 @@ BOOL is_8_3( char *fname, BOOL check_case ) { int len; int l; - int skip; char *p; char *dot_pos; char *slash_pos = strrchr( fname, '/' ); @@ -374,17 +364,12 @@ BOOL is_8_3( char *fname, BOOL check_case ) dot_pos = NULL; while( *p ) { - if( (skip = get_character_len( *p )) != 0 ) - p += skip; - else - { if( *p == '.' && !dot_pos ) dot_pos = (char *)p; - else + /*else if( !isdoschar( *p ) ) - return( False ); + return( False );*/ p++; - } } /* no dot and less than 9 means OK */ @@ -844,7 +829,6 @@ void mangle_name_83( char *s) char base[9]; int baselen = 0; int extlen = 0; - int skip; extension[0] = 0; base[0] = 0; @@ -879,31 +863,9 @@ void mangle_name_83( char *s) *p++ = 0; while( *p && extlen < 3 ) { - skip = get_character_len( *p ); - switch( skip ) - { - case 2: - if( extlen < 2 ) - { + if( /*isdoschar (*p) &&*/ *p != '.' ) extension[extlen++] = p[0]; - extension[extlen++] = p[1]; - } - else - { - extension[extlen++] = mangle( (unsigned char)*p ); - } - p += 2; - break; - case 1: - extension[extlen++] = p[0]; p++; - break; - default: - if( isdoschar (*p) && *p != '.' ) - extension[extlen++] = p[0]; - p++; - break; - } } extension[extlen] = 0; } @@ -913,31 +875,9 @@ void mangle_name_83( char *s) while( *p && baselen < 5 ) { - skip = get_character_len(*p); - switch( skip ) - { - case 2: - if( baselen < 4 ) - { + if( /*isdoschar( *p ) &&*/ *p != '.' ) base[baselen++] = p[0]; - base[baselen++] = p[1]; - } - else - { - base[baselen++] = mangle( (unsigned char)*p ); - } - p += 2; - break; - case 1: - base[baselen++] = p[0]; p++; - break; - default: - if( isdoschar( *p ) && *p != '.' ) - base[baselen++] = p[0]; - p++; - break; - } } base[baselen] = 0; -- cgit