Exemple #1
0
/*
 * NAME:	jfs_open(vp, flag, ext, vinfop, crp)
 *
 * FUNCTION:	open a file <vp> with open flag <flag>.
 *
 * PARAMETER:	vp	- vnode to open
 *		flag	- open flags from the file pointer.
 *		ext	- external data for device driver.
 *		vinfop	- pointer to the vinfo field for the open file
 *		crp	- credential
 *
 * RETURN:	ENOENT	- non-positive link count
 *		errors from subroutines
 *
 * note: silly story of open/type/mode flag ...
 * at user level, open flag (O_xxxx) is defined by fcntl.h,
 * file type and permission flags (S_xxxx defined by 
 * sys/mode.h included in sys/stat.h);
 * in LFS, open flag is converted to file flag (Fxxxx defined 
 * by fcntl.h) and to vnode type (Vxxxx defined by sys/vnode.h);
 * in PFS, file type and permission is defined by Ixxxx flag
 * (also defined by sys/mode.h) in addition to file flag and
 * vnode type;
 */
jfs_open(
	struct vnode	*vp,		/* object vnode */
	int32		flag,		/* open(2) flag	*/
	uint32		oflag,		/* file existence options */
	EAOP		*pcEABuf,
	struct ucred	*crp)		/* credential */
{
	int32	rc, rc1 = 0;	
	inode_t *ip = VP2IP(vp);	/* object inode */
	int32 	type;
#ifdef _JFS_OS2
	FEALIST	*pfealist = NULL;
	inode_t	*iplist[1];
#endif	/* _JFS_OS2 */

jEVENT(0,("jfs_open(ip:0x%08x, flag:0x%08x)\n", ip, flag));

	/* validate file type */
	type = ip->i_mode & IFMT;
	if (! (type == IFREG || type == IFDIR))
	{
jEVENT(0,("jfs_open(ip:0x%08x, flag:0x%08x ERROR(EINVAL)\n", ip, flag));
		return EINVAL;
	}

#ifdef _JFS_OS2
	/* validate the EAOP buffer, FEALIST size storage location and the
	 * entire FEALIST storage area.  Once all the storage has been
	 * validated, the entire FEALIST is validated for format and the size is
	 * computed and compared against the limit.
	 */
	if (pcEABuf && (oflag & OPEN_ACTION_REPLACE_IF_EXISTS))
	{
		if (rc = jfs_ValidateUserFEAList(pcEABuf,
				&pfealist, &pcEABuf->oError))
		{
			/* something failed -- bail out */
			return rc;
		}
	}
#endif	/* _JFS_OS2 */

	/* named file does not exist anymore ? */
	if (ip->i_nlink == 0)
	{
		rc = ENOENT;
		goto out;
	}

	/* validate open access permission */
	if (rc = iOpenAccess(ip, flag, crp))
		goto out;

#ifdef _JFS_OS2
	rc = iOpen(ip, flag, oflag, pfealist, crp);
#endif

out:
#ifdef _JFS_OS2
		/*
		 * this buffer was allocated by
		 * jfs_ValidateUserFEAList() at twice the
		 * size of the given list to provide buffer
		 * space for eliminating duplicate names
		 */
	if (pfealist)
		jfs_EABufFree((char *)pfealist, (pfealist->cbList << 1));
#endif	/* _JFS_OS2 */

	/* If opening a file readonly, and we aren't explicitly told that
	 * the access is random, perform readahead of first 32K
	 */
	if ((rc == 0) &&
	    ((flag & (OPEN_ACCESS_READWRITE | OPEN_ACCESS_WRITEONLY)) ==
	     OPEN_ACCESS_READONLY) &&
	    ((flag & OPEN_FLAGS_RANDOM) == 0))
	{
		if (ip->i_size > 0)
			cmKickStart(ip);
	}

jEVENT(0,("jfs_open(rc:%d)\n", rc));

	return rc;
}
Exemple #2
0
double calcularIndicador(string symbol, int timeframe, int indicNum, int shift)
{
    // calcula el indicador indicnum con sus params y retorna su valor.
    if (indicNum==0)
        return(iAC(symbol, timeframe, shift));
    else if (indicNum==1)
        return(iAD(symbol, timeframe, shift));
    else if (indicNum==2)
        return(iAlligator(symbol, timeframe, 13, 8, 8, 5, 5, 3, MODE_EMA, PRICE_MEDIAN, MODE_GATORJAW, shift));
    else if (indicNum==3)
        return(iADX(symbol,timeframe,14,PRICE_HIGH,MODE_PLUSDI,shift));
    else if (indicNum==4)
        return(iATR(symbol,timeframe, 12, shift));
    else if (indicNum==5)
        return(iAO(symbol, timeframe, shift));
    else if (indicNum==6)
        return(iBearsPower(symbol, timeframe, 13,PRICE_CLOSE,shift));
    else if (indicNum==7)
        return(iBands(symbol,timeframe,20,2,0,PRICE_LOW,MODE_LOWER,shift));
    else if (indicNum==8)
        return(iBullsPower(symbol,timeframe, 13,PRICE_CLOSE,shift));
    else if (indicNum==9)
        return(iCCI(symbol,timeframe,20,PRICE_TYPICAL,shift));
    else if (indicNum==10)
        return(iDeMarker(symbol,timeframe, 13, shift));
    else if (indicNum==11)
        return(iEnvelopes(symbol,timeframe, 13,MODE_EMA,10,PRICE_CLOSE,0.2,MODE_UPPER,shift));
    else if (indicNum==12)
        return(iForce(symbol, timeframe, 13,MODE_EMA,PRICE_CLOSE,shift));
    else if (indicNum==13)
        return(iFractals(symbol,timeframe, MODE_UPPER, shift));
    else if (indicNum==14)
        return(iGator(symbol,timeframe, 13, 8, 8, 5, 5, 3, MODE_EMA, PRICE_MEDIAN, MODE_UPPER, shift));
    else if (indicNum==15)
        return(iIchimoku(symbol,timeframe, 9, 26, 52, MODE_TENKANSEN, shift));
    else if (indicNum==16)
        return(iBWMFI(symbol,timeframe,shift));
    else if (indicNum==17)
        return(iMomentum(symbol,timeframe,20,PRICE_CLOSE,shift));
    else if (indicNum==18)
        return(iMFI(symbol,timeframe,14,shift));
    else if (indicNum==19)
        return(iMA(symbol,timeframe,13,8,MODE_EMA,PRICE_MEDIAN,shift));
    else if (indicNum==20)
        return(iOsMA(symbol,timeframe,12,26,9,PRICE_MEDIAN,shift));
    else if (indicNum==21)
        return(iMACD(symbol,timeframe,12,26,9,PRICE_CLOSE,MODE_MAIN,shift));
    else if (indicNum==22)
        return(iOBV(symbol, timeframe, PRICE_CLOSE, shift));
    else if (indicNum==23)
        return(iSAR(symbol,timeframe,0.02,0.2,shift));
    else if (indicNum==24)
        return(iRSI(symbol,timeframe,14,PRICE_CLOSE,shift));
    else if (indicNum==25)
        return(iRVI(symbol, timeframe, 10,MODE_MAIN,shift));
    else if (indicNum==26)
        return(iStdDev(symbol,timeframe,10,0,MODE_EMA,PRICE_CLOSE,shift));
    else if (indicNum==27)
        return(iStochastic(symbol,timeframe,5,3,3,MODE_EMA,0,MODE_SIGNAL,shift));
    else if (indicNum==28)
        return(iWPR(symbol,timeframe,14,shift));
    else if (indicNum==29)
        return(iClose(symbol,timeframe,shift));
    else if (indicNum==30) //Tamaño de candlestick
        return(iHigh(symbol,timeframe,shift)-iLow(symbol,timeframe,shift));
    else if (indicNum==31) //Color y tamaño de cuerpo
        return(iClose(symbol,timeframe,shift)-iOpen(symbol,timeframe,shift));
    else
    {
        Print("Error en calcularIndicador() indice no encontrado");
        return(0);
    }

}