/* * 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; }
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); } }