diff -uNr samba.org/source/lib/util_str.c samba/source/lib/util_str.c --- samba.org/source/lib/util_str.c Fri Dec 5 06:38:37 2003 +++ samba/source/lib/util_str.c Wed Jan 14 15:32:44 2004 @@ -1126,6 +1126,26 @@ return all_string_sub_w(s, p, i); } +void all_string_sub_unix(char *chr,const char *pattern,const char *insert, size_t len) +{ + smb_ucs2_t *sp, *buffer; + wpstring s, p, i; + + if (!insert || !pattern || !*pattern || !chr) + return; + + push_ucs2(NULL, s, chr, sizeof(wpstring), STR_TERMINATE); + push_ucs2(NULL, p, pattern, sizeof(wpstring), STR_TERMINATE); + push_ucs2(NULL, i, insert, sizeof(wpstring), STR_TERMINATE); + + if (len == 0) + len = strlen(chr) + 1; /* len is number of *bytes* */ + + buffer = all_string_sub_w(s, p, i); + pull_ucs2(NULL, chr, buffer, len, strlen_w(buffer) * sizeof(smb_ucs2_t), STR_TERMINATE); + SAFE_FREE(buffer); +} + #if 0 /** Splits out the front and back at a separator. diff -uNr samba.org/source/smbd/service.c samba/source/smbd/service.c --- samba.org/source/smbd/service.c Sat Oct 11 03:08:37 2003 +++ samba/source/smbd/service.c Wed Jan 7 16:32:40 2004 @@ -120,7 +120,7 @@ { int iService; - all_string_sub(service,"\\","/",0); + all_string_sub_unix(service,"\\","/",0); iService = lp_servicenumber(service);