⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 workman.c

📁 mcdp 是一个的型的Linux下的CD播放器
💻 C
字号:
/* * Author strongly advices against using this code, or a part of it, * in an application designed to run on any Microsoft(tm) platform. * * See doc/README for more information about COPYING terms. */#include "mcd.h"static short wmdb_testdisk(char *fn, struct mcd *cd);/* test the disk lenght */static short wmdb_testdisk(char *fn, struct mcd *cd) {register int pos=0,i=0; while(fn[i++]!='\0')  if(fn[i]==' ') pos=i; /* jump spaces */ if(atoi(fn+pos)==cd->t[0].cddb) return 1; return 0;}int wmdb_getentries(struct mcd *cd) { char *fn=malloc(sizeof(char)*PATH_MAX); int p=0,tr=0,len,fd; /* p=parse;tr=track */ char ch;/* i know that there must have a global file, but i don't remember where */ len=_snprintf(fn,PATH_MAX-1,"%s/%s",getenv("HOME"),".workmandb"); fn[len]='\0'; if ((fd=open(fn,O_RDONLY))<0) {  free(fn); return CDDB_NOENT; } len=0; while (len+=read(fd,&ch,1)>0) {  fn[len-1]=ch;  if (ch=='\n'||ch=='\r') {   p=1;fn[len-1]='\0';len=0;  }  if (p) {   if (!strncmp(fn, "tracks ", 7))    if(wmdb_testdisk(fn,&cd[0]))     while (len+=read(fd,&ch,1)>0) { /* this is one possible match */      fn[len-1]=ch;      if (ch=='\n'||ch=='\r') {       p=1;fn[len-1]='\0';len=0;      }      if (p) {       if (!strncmp(fn,"cdname ",7)) {        str_ncpy(cd->t[0].name, fn+7, str_len(fn));       } else if (!strncmp(fn,"artist ",7)) {        strncat(cd->t[0].name," >> ",4);        strncat(cd->t[0].name, fn+7, str_len(fn));       } else if (!strncmp(fn,"track ", 6)) {        str_ncpy(cd->t[++tr].name, fn+6, str_len(fn));       } else if (!strncmp(fn,"tracks ", 7)) { break; }       p=0;      }     }   p=0;  } } /* while() */ free(fn); if (tr) return CDDB_WORKMAN; return CDDB_NOENT;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -