69,381
社区成员
发帖
与我相关
我的任务
分享
//Open and parse a M3U file:
int M3U_open(char *fileName){
FILE *f;
char lineText[512];
char chrLength[20];
char title[264];
struct M3U_songEntry *singleEntry;
int playListCount = lPlayList.songCount;
f = fopen(fileName, "rt");
if (f == NULL){
//Error opening file:
return(-1);
}
while(fgets(lineText, 256, f) != NULL){
if (!strncmp(lineText, "#EXTINF:", 8)){
//Length and title:
splitSongInfo(lineText, chrLength, title);
}else if (!strncmp(lineText, "#EXTM3U", 7)){
//Nothing to do. :)
}else if (strlen(lineText) > 2){
//Store song info:
singleEntry = &lPlayList.songs[playListCount++];
strncpy(singleEntry->fileName, lineText, 263);
singleEntry->fileName[263] = '\0';
if ((int)singleEntry->fileName[strlen(singleEntry->fileName) - 1] == 10 || (int)singleEntry->fileName[strlen(singleEntry->fileName) - 1] == 13 ){
singleEntry->fileName[strlen(singleEntry->fileName) - 1] = '\0';
}
if ((int)singleEntry->fileName[strlen(singleEntry->fileName) - 1] == 10 || (int)singleEntry->fileName[strlen(singleEntry->fileName) - 1] == 13 ){
singleEntry->fileName[strlen(singleEntry->fileName) - 1] = '\0';
}
if (strlen(title)){
strncpy(singleEntry->title, title, 263);
}else{
getFileName(singleEntry->fileName, singleEntry->title);
}
singleEntry->title[263] = '\0';
singleEntry->length = atoi(chrLength);
if (playListCount == MAX_SONGS){
break;
}
}
}
fclose(f);
lPlayList.modified = 0;
lPlayList.songCount = playListCount;
strcpy(lPlayList.fileName, fileName);
return(0);
}