summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Adam <obnox@samba.org>2012-06-13 17:58:54 +0200
committerStefan Metzmacher <metze@samba.org>2012-06-15 03:28:14 +0200
commit3309a5298835bf5bb379a62ca67c0d9577dbe65b (patch)
treeac58766ca6e75545287c1f11c392cb03760d6afa
parent0635af0a0808374c0e34582b153c0bbbbfac16d2 (diff)
downloadsamba-3309a5298835bf5bb379a62ca67c0d9577dbe65b.tar.gz
samba-3309a5298835bf5bb379a62ca67c0d9577dbe65b.tar.bz2
samba-3309a5298835bf5bb379a62ca67c0d9577dbe65b.zip
s3:lib: add a utility function "fsp_fnum_dbg" for logging the fnum of an fsp
This is to unify logging of an files_struct. Signed-off-by: Stefan Metzmacher <metze@samba.org>
-rw-r--r--source3/include/proto.h1
-rw-r--r--source3/lib/filename_util.c28
2 files changed, 29 insertions, 0 deletions
diff --git a/source3/include/proto.h b/source3/include/proto.h
index d1d7131065..463d9807b8 100644
--- a/source3/include/proto.h
+++ b/source3/include/proto.h
@@ -1630,6 +1630,7 @@ NTSTATUS create_synthetic_smb_fname_split(TALLOC_CTX *ctx,
struct smb_filename **smb_fname_out);
const char *smb_fname_str_dbg(const struct smb_filename *smb_fname);
const char *fsp_str_dbg(const struct files_struct *fsp);
+const char *fsp_fnum_dbg(const struct files_struct *fsp);
NTSTATUS copy_smb_filename(TALLOC_CTX *ctx,
const struct smb_filename *smb_fname_in,
struct smb_filename **smb_fname_out);
diff --git a/source3/lib/filename_util.c b/source3/lib/filename_util.c
index ba628a85c4..fe43be6dc2 100644
--- a/source3/lib/filename_util.c
+++ b/source3/lib/filename_util.c
@@ -132,6 +132,34 @@ const char *fsp_str_dbg(const struct files_struct *fsp)
return smb_fname_str_dbg(fsp->fsp_name);
}
+/**
+ * Create a debug string for the fnum of an fsp.
+ *
+ * This is allocated to talloc_tos() or a string constant
+ * in certain corner cases. The returned string should
+ * hence not be free'd directly but only via the talloc stack.
+ */
+const char *fsp_fnum_dbg(const struct files_struct *fsp)
+{
+ char *str;
+
+ if (fsp == NULL) {
+ return "fnum [fsp is NULL]";
+ }
+
+ if (fsp->fnum == FNUM_FIELD_INVALID) {
+ return "fnum [invalid value]";
+ }
+
+ str = talloc_asprintf(talloc_tos(), "fnum %d", fsp->fnum);
+ if (str == NULL) {
+ DEBUG(1, ("%s: talloc_asprintf failed\n", __FUNCTION__));
+ return "fnum [talloc failed!]";
+ }
+
+ return str;
+}
+
NTSTATUS copy_smb_filename(TALLOC_CTX *ctx,
const struct smb_filename *smb_fname_in,
struct smb_filename **smb_fname_out)