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

📄 savespecbuf.cc

📁 larbin是一种开源的网络爬虫/网络蜘蛛
💻 CC
字号:
// Larbin// Sebastien Ailleret// 09-12-01 -> 09-12-01static int nbdir = -1;static int nbfile = filesPerDir;static char *fileName;static uint endFileName;static int indexFds = -1;static char buf[maxUrlSize+30];/** give the name of the file given dir and file number * this char * is static */static void getSpecName(int nbdir, int nbfile) {  sprintf(fileName+endFileName, "d%5i/f%5i%s",          nbdir, nbfile, privilegedExts[0]);  for (int i=endFileName+1; fileName[i]==' '; i++)    fileName[i] = '0';  for (int i=endFileName+8; fileName[i]==' '; i++)    fileName[i] = '0';}static void getIndexName(int nbdir) {  sprintf(fileName+endFileName, "d%5i/index", nbdir);  for (int i=endFileName+1; fileName[i]==' '; i++)    fileName[i] = '0';}/** in case of specific save */void initSpecific () {  mkdir(specDir, S_IRWXU);  endFileName = strlen(specDir);  fileName = new char[endFileName+20];  strcpy(fileName, specDir);  if (fileName[endFileName-1] != '/') fileName[endFileName++] = '/';}/** open file descriptor */void html::newSpec () {  nbfile++;  if (nbfile >= filesPerDir) { // new dir    nbdir++; nbfile = 0;    // create the directory    getIndexName(nbdir);    fileName[endFileName+6] = 0;    if (mkdir(fileName, S_IRWXU) != 0) perror("trouble while creating dir");    fileName[endFileName+6] = '/';    // open new index    close(indexFds);    indexFds = creat(fileName, S_IRWXU);    if (indexFds < 0) {      cerr << "cannot open file " << fileName << " : "           << strerror(errno) << endl;      exit(1);    }  }  mydir = nbdir;  myfile = nbfile;  // write index  int s = sprintf(buf, "%4d  ", nbfile);  s += here->writeUrl(buf+s);  buf[s++] = '\n';  ecrireBuff(indexFds, buf, s);  // open new file  getSpecName(nbdir, nbfile);  fdsSpec = creat(fileName, S_IRWXU);  if (fdsSpec < 0) {    cerr << "cannot open file " << fileName << " : "         << strerror(errno) << endl;    exit(1);  }  nbSpec = 0;}/** feed file descriptor */bool html::pipeSpec () {  int nb = buffer + pos - posParse;  nbSpec += nb;  if (nbSpec >= maxSpecSize) {    errno = tooBig;    return true;  }  ecrireBuff(fdsSpec, posParse, nb);  pos = posParse - buffer;  return false;}/** get the content of the page */char *html::getContent () {  static char content[maxSpecSize];  if (mydir >= 0) {    getSpecName(mydir, myfile);    int fds = open (fileName, O_RDONLY);    if (fds < 0) perror(fileName);    int cont = 1;    int pos = 0;    while (cont) {      cont = read(fds, content+pos, maxSpecSize-1-pos);      pos += cont;    }    content[pos] = 0;    close(fds);    return content;  } else {    return contentStart;  }}#define getSize() nbSpec#define constrSpec() \  fdsSpec = -1; \  mydir = -1;   // indicate no save#define endOfInput() 0#define destructSpec() if (fdsSpec != -1) close(fdsSpec);

⌨️ 快捷键说明

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