pSMB->FileAttributes = cpu_to_le16(ATTR_NORMAL); 
pSMB->FileAttributes = cpu_to_le16(0/*ATTR_NORMAL*/); /* BB FIXME */ 
SMBLegacyOpen(const int xid, struct cifsTconInfo *tcon,	    const char *fileName, const int openDisposition,	    const int access_flags, const int create_options, __u16 * netfid,            int *pOplock, FILE_ALL_INFO * pfile_info,	    const struct nls_table *nls_codepage, int remap){	int rc = -EACCES;	OPENX_REQ *pSMB = NULL;	OPENX_RSP *pSMBr = NULL;	int bytes_returned;	int name_len;	__u16 count;OldOpenRetry:	rc = smb_init(SMB_COM_OPEN_ANDX, 15, tcon, (void **) &pSMB,		      (void **) &pSMBr);	if (rc)		return rc;	pSMB->AndXCommand = 0xFF;       /* none */	if (pSMB->hdr.Flags2 & SMBFLG2_UNICODE) {		count = 1;      /* account for one byte pad to word boundary */		name_len =		   cifsConvertToUCS((__le16 *) (pSMB->fileName + 1),				    fileName, PATH_MAX, nls_codepage, remap);		name_len++;     /* trailing null */		name_len *= 2;	} else {                /* BB improve check for buffer overruns BB */		count = 0;      /* no pad */		name_len = strnlen(fileName, PATH_MAX);		name_len++;     /* trailing null */		strncpy(pSMB->fileName, fileName, name_len);	}	if (*pOplock & REQ_OPLOCK)		pSMB->OpenFlags = cpu_to_le16(REQ_OPLOCK);	else if (*pOplock & REQ_BATCHOPLOCK) {		pSMB->OpenFlags = cpu_to_le16(REQ_BATCHOPLOCK);	}	pSMB->OpenFlags |= cpu_to_le16(REQ_MORE_INFO);	/* BB fixme add conversion for access_flags to bits 0 - 2 of mode */	/* 0 = read	   1 = write	   2 = rw	   3 = execute        */	pSMB->Mode = cpu_to_le16(2);	pSMB->Mode |= cpu_to_le16(0x40); /* deny none */	/* set file as system file if special file such	   as fifo and server expecting SFU style and	   no Unix extensions */        if(create_options & CREATE_OPTION_SPECIAL)                pSMB->FileAttributes = cpu_to_le16(ATTR_SYSTEM);        else                pSMB->FileAttributes = cpu_to_le16(ATTR_NORMAL);	/* if ((omode & S_IWUGO) == 0)		pSMB->FileAttributes |= cpu_to_le32(ATTR_READONLY);*/	/*  Above line causes problems due to vfs splitting create into two	    pieces - need to set mode after file created not while it is	    being created */	/* BB FIXME BB *//*	pSMB->CreateOptions = cpu_to_le32(create_options & CREATE_OPTIONS_MASK); */	/* BB FIXME END BB */	pSMB->OpenFunction = convert_disposition(openDisposition);	count += name_len;	pSMB->hdr.smb_buf_length += count;	pSMB->ByteCount = cpu_to_le16(count);	/* long_op set to 1 to allow for oplock break timeouts */	rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB,		         (struct smb_hdr *) pSMBr, &bytes_returned, 1);	cifs_stats_inc(&tcon->num_opens);	if (rc) {		cFYI(1, ("Error in Open = %d", rc));	} else {	/* BB verify if wct == 15 *//*		*pOplock = pSMBr->OplockLevel; */  /* BB take from action field BB */		*netfid = pSMBr->Fid;   /* cifs fid stays in le */		/* Let caller know file was created so we can set the mode. */		/* Do we care about the CreateAction in any other cases? */	/* BB FIXME BB *//*		if(cpu_to_le32(FILE_CREATE) == pSMBr->CreateAction)			*pOplock |= CIFS_CREATE_ACTION; */	/* BB FIXME END */		if(pfile_info) {			pfile_info->CreationTime = 0; /* BB convert CreateTime*/			pfile_info->LastAccessTime = 0; /* BB fixme */			pfile_info->LastWriteTime = 0; /* BB fixme */			pfile_info->ChangeTime = 0;  /* BB fixme */			pfile_info->Attributes = pSMBr->FileAttributes; 			/* the file_info buf is endian converted by caller */			pfile_info->AllocationSize = pSMBr->EndOfFile;			pfile_info->EndOfFile = pSMBr->EndOfFile;			pfile_info->NumberOfLinks = cpu_to_le32(1);		}	}	cifs_buf_release(pSMB);	if (rc == -EAGAIN)		goto OldOpenRetry;	return rc;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/3e87d80391c84eefceb4bda94a6363661dba4f71/cifssmb.c/clean/fs/cifs/cifssmb.c