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

📄 archive.cpp

📁 国外网站上的一些精典的C程序
💻 CPP
字号:
/***  ARCHIVE.CPP****   Written by Jari Laaksonen (2:221/360.20), 2 Sep 1994**   Based on the code by Heinz Ozwirk and David Gersic.****   Free for all participants of the C_ECHO & other conferences where**   this code is posted. Released to SNIPPETS by the authors.****   See the file WhichArc.DOC about archive types and file offsets**   for self extracting archives.*/#include "archive.hpp"#include "whicharc.h"int Archive::Scan (FILE *fp, char *szBuff, long flen){      if (offset > flen)            return 0;      int rc;      rc = SeekFile (fp, szBuff, offset);      if (rc > 0)            rc = Check (szBuff);      return (rc > UNKNOWN ? sfxtype : rc);}// Generic fingerprint check.// LHA and PAK/ARC needs more complicated checking// If some new archiver needs different check algorithm, derive a new// class from class Archive and write a new Check() function.int Archive::Check (char *szBuff){      char *p;      p = fingerprint;      while (*p)      {            if (*p != *szBuff)                  return UNKNOWN;            p++;            szBuff++;      }      return type;}int LhaArchive::Check (char *szBuff){      int i, c;      for (c = 0, i = szBuff[0]; i--; c += (szBuff + 2)[i])            ;      if (          ((unsigned char) (c & 0x00FF)) == szBuff[1]          && szBuff[2] == fingerprint[0]          && szBuff[3] == fingerprint[1]          && szBuff[4] == fingerprint[2]          && szBuff[6] == fingerprint[3]         )      {            if (szBuff[5] > '1')            {                  sfxtype = SFXLHA;                  return LHA;            }            else            {                  sfxtype = SFXLHARC;                  return LHARC;            }      }      else  return UNKNOWN;}int PakArchive::Check (char *szBuff){      if (szBuff[0] == 0x1A)      {            if (szBuff[1] == 0x0A || szBuff[1] == 0x0B)            {                  sfxtype = SFXPAK;                  return PAK;            }            else if (szBuff[1] > 0x14)            {                  sfxtype = SFXARC6;                  return ARC6;            }            else            {                  sfxtype = SFXARC;                  return ARC;            }      }      else  return UNKNOWN;}

⌨️ 快捷键说明

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