void qspRefreshPlayList() { QSP_CHAR **s, *file, *str, *pos; int count = qspPLFilesCount; if (!count) return; qspCopyStrs(&s, qspPLFiles, 0, count); qspClearPlayList(QSP_FALSE); while (--count >= 0) { str = s[count]; pos = qspStrChar(str, QSP_PLVOLUMEDELIM[0]); if (pos) *pos = 0; if (qspIsAnyString(str)) { file = qspGetAbsFromRelPath(str); if (qspSearchPlayList(str) < 0 && qspCallIsPlayingFile(file)) { if (pos) *pos = QSP_PLVOLUMEDELIM[0]; qspPLFiles[qspPLFilesCount++] = qspGetNewText(str, -1); } free(file); } free(str); } free(s); }
static QSPVar *qspGetVarData(QSP_CHAR *s, QSP_BOOL isSet, int *index) { QSPVar *var; QSPVariant ind; int oldRefreshCount; QSP_CHAR *temp, *rPos, *lPos = qspStrChar(s, QSP_LSBRACK[0]); if (lPos) { rPos = qspStrPos(lPos, QSP_RSBRACK, QSP_FALSE); if (!rPos) { qspSetError(QSP_ERR_BRACKNOTFOUND); return 0; } *lPos = 0; var = qspVarReference(s, isSet); *lPos = QSP_LSBRACK[0]; if (!var) return 0; temp = qspSkipSpaces(lPos + 1); if (temp == rPos) { if (isSet) *index = var->ValsCount; else *index = (var->ValsCount ? var->ValsCount - 1 : 0); } else { oldRefreshCount = qspRefreshCount; *rPos = 0; ind = qspExprValue(temp); *rPos = QSP_RSBRACK[0]; if (qspRefreshCount != oldRefreshCount || qspErrorNum) return 0; if (ind.IsStr) { *index = qspGetVarTextIndex(var, QSP_STR(ind), isSet); free(QSP_STR(ind)); } else *index = QSP_NUM(ind); } return var; } *index = 0; return qspVarReference(s, isSet); }
void qspPlayPLFiles() { int i; QSP_CHAR *pos; for (i = 0; i < qspPLFilesCount; ++i) { pos = qspStrChar(qspPLFiles[i], QSP_PLVOLUMEDELIM[0]); if (pos) { *pos = 0; qspPlayFile(qspPLFiles[i], qspStrToNum(pos + 1, 0), QSP_FALSE); *pos = QSP_PLVOLUMEDELIM[0]; } else qspPlayFile(qspPLFiles[i], 100, QSP_FALSE); } }
static QSP_CHAR *qspGetVarNameOnly(QSP_CHAR *s) { QSP_CHAR *brackPos = qspStrChar(s, QSP_LSBRACK[0]); if (brackPos) return qspGetNewText(s, (int)(brackPos - s)); return qspDelSpc(s); }