diff options
-rw-r--r-- | libcli/smb/smb_common.h | 1 | ||||
-rw-r--r-- | libcli/smb/smb_util.h | 22 | ||||
-rw-r--r-- | libcli/smb/util.c | 69 | ||||
-rw-r--r-- | libcli/smb/wscript_build | 2 | ||||
-rw-r--r-- | source3/Makefile.in | 3 | ||||
-rw-r--r-- | source3/include/proto.h | 1 | ||||
-rw-r--r-- | source3/lib/util.c | 20 | ||||
-rwxr-xr-x | source3/wscript_build | 3 | ||||
-rw-r--r-- | source4/libcli/raw/rawfile.c | 46 |
9 files changed, 97 insertions, 70 deletions
diff --git a/libcli/smb/smb_common.h b/libcli/smb/smb_common.h index 8fe0623727..ca04eb30c3 100644 --- a/libcli/smb/smb_common.h +++ b/libcli/smb/smb_common.h @@ -25,5 +25,6 @@ #include "../libcli/smb/smb2_constants.h" #include "../libcli/smb/smb2_create_blob.h" #include "../libcli/smb/smb_constants.h" +#include "../libcli/smb/smb_util.h" #endif diff --git a/libcli/smb/smb_util.h b/libcli/smb/smb_util.h new file mode 100644 index 0000000000..8a67c30913 --- /dev/null +++ b/libcli/smb/smb_util.h @@ -0,0 +1,22 @@ +/* + Unix SMB/CIFS implementation. + client file operations + Copyright (C) Andrew Tridgell 1994-1998 + Copyright (C) Jeremy Allison 2001-2002 + Copyright (C) James Myers 2003 + + 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 + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +char *attrib_string(TALLOC_CTX *mem_ctx, uint32_t attrib); diff --git a/libcli/smb/util.c b/libcli/smb/util.c new file mode 100644 index 0000000000..f8fa56ff6a --- /dev/null +++ b/libcli/smb/util.c @@ -0,0 +1,69 @@ +/* + Unix SMB/CIFS implementation. + client file operations + Copyright (C) Andrew Tridgell 1994-1998 + Copyright (C) Jeremy Allison 2001-2002 + Copyright (C) James Myers 2003 + + 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 + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +#include "includes.h" +#include "libcli/smb/smb_common.h" + +/** + Return a string representing a CIFS attribute for a file. +**/ +char *attrib_string(TALLOC_CTX *mem_ctx, uint32_t attrib) +{ + int i, len; + const struct { + char c; + uint16_t attr; + } attr_strs[] = { + {'V', FILE_ATTRIBUTE_VOLUME}, + {'D', FILE_ATTRIBUTE_DIRECTORY}, + {'A', FILE_ATTRIBUTE_ARCHIVE}, + {'H', FILE_ATTRIBUTE_HIDDEN}, + {'S', FILE_ATTRIBUTE_SYSTEM}, + {'N', FILE_ATTRIBUTE_NORMAL}, + {'R', FILE_ATTRIBUTE_READONLY}, + {'d', FILE_ATTRIBUTE_DEVICE}, + {'t', FILE_ATTRIBUTE_TEMPORARY}, + {'s', FILE_ATTRIBUTE_SPARSE}, + {'r', FILE_ATTRIBUTE_REPARSE_POINT}, + {'c', FILE_ATTRIBUTE_COMPRESSED}, + {'o', FILE_ATTRIBUTE_OFFLINE}, + {'n', FILE_ATTRIBUTE_NONINDEXED}, + {'e', FILE_ATTRIBUTE_ENCRYPTED} + }; + char *ret; + + ret = talloc_array(mem_ctx, char, ARRAY_SIZE(attr_strs)+1); + if (!ret) { + return NULL; + } + + for (len=i=0; i<ARRAY_SIZE(attr_strs); i++) { + if (attrib & attr_strs[i].attr) { + ret[len++] = attr_strs[i].c; + } + } + + ret[len] = 0; + + talloc_set_name_const(ret, ret); + + return ret; +} diff --git a/libcli/smb/wscript_build b/libcli/smb/wscript_build index 6796b4c7fb..36d9d1033a 100644 --- a/libcli/smb/wscript_build +++ b/libcli/smb/wscript_build @@ -2,7 +2,7 @@ bld.SAMBA_SUBSYSTEM('LIBCLI_SMB_COMMON', - source='smb2_create_blob.c', + source='smb2_create_blob.c util.c', autoproto='smb_common_proto.h', public_deps='talloc' ) diff --git a/source3/Makefile.in b/source3/Makefile.in index 4ec1868341..7c5da0971f 100644 --- a/source3/Makefile.in +++ b/source3/Makefile.in @@ -479,7 +479,8 @@ LIB_OBJ = $(LIBSAMBAUTIL_OBJ) $(UTIL_OBJ) $(CRYPTO_OBJ) \ libads/krb5_errs.o lib/system_smbd.o lib/audit.o $(LIBNDR_OBJ) \ lib/file_id.o lib/idmap_cache.o \ ../libcli/security/dom_sid.o ../libcli/security/security_descriptor.o \ - ../libcli/security/security_token.o ../libcli/security/util_sid.o + ../libcli/security/security_token.o ../libcli/security/util_sid.o \ + ../libcli/smb/util.o LIB_DUMMY_OBJ = lib/dummysmbd.o lib/dummyroot.o LIB_NONSMBD_OBJ = $(LIB_OBJ) $(LIB_DUMMY_OBJ) diff --git a/source3/include/proto.h b/source3/include/proto.h index a697188abc..058356e0d6 100644 --- a/source3/include/proto.h +++ b/source3/include/proto.h @@ -630,7 +630,6 @@ bool file_exist_stat(const char *fname,SMB_STRUCT_STAT *sbuf, bool socket_exist(const char *fname); uint64_t get_file_size_stat(const SMB_STRUCT_STAT *sbuf); SMB_OFF_T get_file_size(char *file_name); -char *attrib_string(TALLOC_CTX *mem_ctx, uint16 mode); void show_msg(char *buf); void smb_set_enclen(char *buf,int len,uint16 enc_ctx_num); void smb_setlen(char *buf,int len); diff --git a/source3/lib/util.c b/source3/lib/util.c index d908ea86f0..8805197f2d 100644 --- a/source3/lib/util.c +++ b/source3/lib/util.c @@ -295,26 +295,6 @@ SMB_OFF_T get_file_size(char *file_name) } /******************************************************************* - Return a string representing an attribute for a file. -********************************************************************/ - -char *attrib_string(TALLOC_CTX *mem_ctx, uint16 mode) -{ - fstring attrstr; - - attrstr[0] = 0; - - if (mode & FILE_ATTRIBUTE_VOLUME) fstrcat(attrstr,"V"); - if (mode & FILE_ATTRIBUTE_DIRECTORY) fstrcat(attrstr,"D"); - if (mode & FILE_ATTRIBUTE_ARCHIVE) fstrcat(attrstr,"A"); - if (mode & FILE_ATTRIBUTE_HIDDEN) fstrcat(attrstr,"H"); - if (mode & FILE_ATTRIBUTE_SYSTEM) fstrcat(attrstr,"S"); - if (mode & FILE_ATTRIBUTE_READONLY) fstrcat(attrstr,"R"); - - return talloc_strdup(mem_ctx, attrstr); -} - -/******************************************************************* Show a smb message structure. ********************************************************************/ diff --git a/source3/wscript_build b/source3/wscript_build index e5384630c0..5a7998391c 100755 --- a/source3/wscript_build +++ b/source3/wscript_build @@ -1066,7 +1066,8 @@ bld.SAMBA3_BINARY('client/smbclient' + bld.env.suffix3, source=CLIENT_SRC, deps='''talloc tdb cap POPT_SAMBA3 passdb LIBSMB LIB_NONSMBD PARAM_WITHOUT_REG wbclient param KRBCLIENT LIBMSRPC_GEN - msrpc3 SMBREADLINE libsmb/smbclient RPC_NDR_SRVSVC INIT_LSA''', + msrpc3 SMBREADLINE libsmb/smbclient RPC_NDR_SRVSVC INIT_LSA + LIBCLI_SMB_COMMON''', vars=locals()) bld.SAMBA3_BINARY('net', diff --git a/source4/libcli/raw/rawfile.c b/source4/libcli/raw/rawfile.c index 5797540edd..626067a2a2 100644 --- a/source4/libcli/raw/rawfile.c +++ b/source4/libcli/raw/rawfile.c @@ -29,52 +29,6 @@ if (!req) return NULL; \ } while (0) -/** - Return a string representing a CIFS attribute for a file. -**/ -char *attrib_string(TALLOC_CTX *mem_ctx, uint32_t attrib) -{ - int i, len; - const struct { - char c; - uint16_t attr; - } attr_strs[] = { - {'V', FILE_ATTRIBUTE_VOLUME}, - {'D', FILE_ATTRIBUTE_DIRECTORY}, - {'A', FILE_ATTRIBUTE_ARCHIVE}, - {'H', FILE_ATTRIBUTE_HIDDEN}, - {'S', FILE_ATTRIBUTE_SYSTEM}, - {'N', FILE_ATTRIBUTE_NORMAL}, - {'R', FILE_ATTRIBUTE_READONLY}, - {'d', FILE_ATTRIBUTE_DEVICE}, - {'t', FILE_ATTRIBUTE_TEMPORARY}, - {'s', FILE_ATTRIBUTE_SPARSE}, - {'r', FILE_ATTRIBUTE_REPARSE_POINT}, - {'c', FILE_ATTRIBUTE_COMPRESSED}, - {'o', FILE_ATTRIBUTE_OFFLINE}, - {'n', FILE_ATTRIBUTE_NONINDEXED}, - {'e', FILE_ATTRIBUTE_ENCRYPTED} - }; - char *ret; - - ret = talloc_array(mem_ctx, char, ARRAY_SIZE(attr_strs)+1); - if (!ret) { - return NULL; - } - - for (len=i=0; i<ARRAY_SIZE(attr_strs); i++) { - if (attrib & attr_strs[i].attr) { - ret[len++] = attr_strs[i].c; - } - } - - ret[len] = 0; - - talloc_set_name_const(ret, ret); - - return ret; -} - /**************************************************************************** Rename a file - async interface ****************************************************************************/ |