Author: metze Date: 2006-05-16 16:28:36 +0000 (Tue, 16 May 2006) New Revision: 15638
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=15638 Log: add a usefull macro to get a pointer the smb_handle union of smb_open, as it's not nicely alligned for all levels, If someone has an idea for a better solution where we can access it via op->generic.out.file.* please let me know:-) metze Modified: branches/SAMBA_4_0/source/libcli/raw/interfaces.h Changeset: Modified: branches/SAMBA_4_0/source/libcli/raw/interfaces.h =================================================================== --- branches/SAMBA_4_0/source/libcli/raw/interfaces.h 2006-05-16 16:07:41 UTC (rev 15637) +++ branches/SAMBA_4_0/source/libcli/raw/interfaces.h 2006-05-16 16:28:36 UTC (rev 15638) @@ -1173,6 +1173,48 @@ /* union for open() backend call */ union smb_open { +/* + * because the *.out.file structs are not aligned to the same offset for each level + * we provide a hepler macro that should be used to find the current smb_handle structure + */ +#define SMB_OPEN_OUT_FILE(op, file) do { \ + switch (op->generic.level) { \ + case RAW_OPEN_OPEN: \ + file = &op->openold.out.file; \ + break; \ + case RAW_OPEN_OPENX: \ + file = &op->openx.out.file; \ + break; \ + case RAW_OPEN_MKNEW: \ + file = &op->mknew.out.file; \ + break; \ + case RAW_OPEN_CREATE: \ + file = &op->create.out.file; \ + break; \ + case RAW_OPEN_CTEMP: \ + file = &op->ctemp.out.file; \ + break; \ + case RAW_OPEN_SPLOPEN: \ + file = &op->splopen.out.file; \ + break; \ + case RAW_OPEN_NTCREATEX: \ + file = &op->ntcreatex.out.file; \ + break; \ + case RAW_OPEN_T2OPEN: \ + file = &op->t2open.out.file; \ + break; \ + case RAW_OPEN_NTTRANS_CREATE: \ + file = &op->nttrans.out.file; \ + break; \ + case RAW_OPEN_OPENX_READX: \ + file = &op->openxreadx.out.file; \ + break; \ + default: \ + /* this must be a programmer error */ \ + file = NULL; \ + break; \ + } \ +} while (0) /* SMBNTCreateX interface */ struct { enum smb_open_level level; @@ -1212,7 +1254,7 @@ uint16_t ipc_state; uint8_t is_directory; } out; - } ntcreatex, generic; + } ntcreatex, nttrans, generic; /* TRANS2_OPEN interface */ struct {