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

📄 record.c

📁 open source bios with linux platform, very good and can be reused.
💻 C
📖 第 1 页 / 共 2 页
字号:
      d_fetchsw(&pdata, &data->u.dir.dirFndrInfo.frComment);      d_fetchsl(&pdata, &data->u.dir.dirFndrInfo.frPutAway);      for (i = 0; i < 4; ++i)	d_fetchsl(&pdata, &data->u.dir.dirResrv[i]);      break;    case cdrFilRec:      d_fetchsb(&pdata, &data->u.fil.filFlags);      d_fetchsb(&pdata, &data->u.fil.filTyp);      d_fetchsl(&pdata, &data->u.fil.filUsrWds.fdType);      d_fetchsl(&pdata, &data->u.fil.filUsrWds.fdCreator);      d_fetchsw(&pdata, &data->u.fil.filUsrWds.fdFlags);      d_fetchsw(&pdata, &data->u.fil.filUsrWds.fdLocation.v);      d_fetchsw(&pdata, &data->u.fil.filUsrWds.fdLocation.h);      d_fetchsw(&pdata, &data->u.fil.filUsrWds.fdFldr);      d_fetchul(&pdata, &data->u.fil.filFlNum);      d_fetchuw(&pdata, &data->u.fil.filStBlk);      d_fetchul(&pdata, &data->u.fil.filLgLen);      d_fetchul(&pdata, &data->u.fil.filPyLen);      d_fetchuw(&pdata, &data->u.fil.filRStBlk);      d_fetchul(&pdata, &data->u.fil.filRLgLen);      d_fetchul(&pdata, &data->u.fil.filRPyLen);      d_fetchsl(&pdata, &data->u.fil.filCrDat);      d_fetchsl(&pdata, &data->u.fil.filMdDat);      d_fetchsl(&pdata, &data->u.fil.filBkDat);      d_fetchsw(&pdata, &data->u.fil.filFndrInfo.fdIconID);      for (i = 0; i < 4; ++i)	d_fetchsw(&pdata, &data->u.fil.filFndrInfo.fdUnused[i]);      d_fetchsw(&pdata, &data->u.fil.filFndrInfo.fdComment);      d_fetchsl(&pdata, &data->u.fil.filFndrInfo.fdPutAway);      d_fetchuw(&pdata, &data->u.fil.filClpSize);      for (i = 0; i < 3; ++i)	{	  d_fetchuw(&pdata, &data->u.fil.filExtRec[i].xdrStABN);	  d_fetchuw(&pdata, &data->u.fil.filExtRec[i].xdrNumABlks);	}      for (i = 0; i < 3; ++i)	{	  d_fetchuw(&pdata, &data->u.fil.filRExtRec[i].xdrStABN);	  d_fetchuw(&pdata, &data->u.fil.filRExtRec[i].xdrNumABlks);	}      d_fetchsl(&pdata, &data->u.fil.filResrv);      break;    case cdrThdRec:      for (i = 0; i < 2; ++i)	d_fetchsl(&pdata, &data->u.dthd.thdResrv[i]);      d_fetchul(&pdata, &data->u.dthd.thdParID);      d_fetchstr(&pdata, data->u.dthd.thdCName,		 sizeof(data->u.dthd.thdCName));      break;    case cdrFThdRec:      for (i = 0; i < 2; ++i)	d_fetchsl(&pdata, &data->u.fthd.fthdResrv[i]);      d_fetchul(&pdata, &data->u.fthd.fthdParID);      d_fetchstr(&pdata, data->u.fthd.fthdCName,		 sizeof(data->u.fthd.fthdCName));      break;    default:      ASSERT(0);    }}/* * NAME:	record->packextdata() * DESCRIPTION:	pack extent record data */void r_packextdata(const ExtDataRec *data, byte *pdata, unsigned int *len){  const byte *start = pdata;  int i;  for (i = 0; i < 3; ++i)    {      d_storeuw(&pdata, (*data)[i].xdrStABN);      d_storeuw(&pdata, (*data)[i].xdrNumABlks);    }  if (len)    *len += pdata - start;}/* * NAME:	record->unpackextdata() * DESCRIPTION:	unpack extent record data */void r_unpackextdata(const byte *pdata, ExtDataRec *data){  int i;  for (i = 0; i < 3; ++i)    {      d_fetchuw(&pdata, &(*data)[i].xdrStABN);      d_fetchuw(&pdata, &(*data)[i].xdrNumABlks);    }}/* * NAME:	record->makecatkey() * DESCRIPTION:	construct a catalog record key */void r_makecatkey(CatKeyRec *key, unsigned long parid, const char *name){  int len;  len = strlen(name) + 1;  key->ckrKeyLen = 0x05 + len + (len & 1);  key->ckrResrv1 = 0;  key->ckrParID  = parid;  strcpy(key->ckrCName, name);}/* * NAME:	record->makeextkey() * DESCRIPTION:	construct an extents record key */void r_makeextkey(ExtKeyRec *key,		  int fork, unsigned long fnum, unsigned int fabn){  key->xkrKeyLen = 0x07;  key->xkrFkType = fork;  key->xkrFNum   = fnum;  key->xkrFABN   = fabn;}/* * NAME:	record->packcatrec() * DESCRIPTION:	create a packed catalog record */void r_packcatrec(const CatKeyRec *key, const CatDataRec *data,		  byte *precord, unsigned int *len){  r_packcatkey(key, precord, len);  r_packcatdata(data, HFS_RECDATA(precord), len);}/* * NAME:	record->packextrec() * DESCRIPTION:	create a packed extents record */void r_packextrec(const ExtKeyRec *key, const ExtDataRec *data,		  byte *precord, unsigned int *len){  r_packextkey(key, precord, len);  r_packextdata(data, HFS_RECDATA(precord), len);}/* * NAME:	record->packdirent() * DESCRIPTION:	make changes to a catalog record */void r_packdirent(CatDataRec *data, const hfsdirent *ent){  switch (data->cdrType)    {    case cdrDirRec:      data->u.dir.dirCrDat = d_mtime(ent->crdate);      data->u.dir.dirMdDat = d_mtime(ent->mddate);      data->u.dir.dirBkDat = d_mtime(ent->bkdate);      data->u.dir.dirUsrInfo.frFlags      = ent->fdflags;      data->u.dir.dirUsrInfo.frLocation.v = ent->fdlocation.v;      data->u.dir.dirUsrInfo.frLocation.h = ent->fdlocation.h;      data->u.dir.dirUsrInfo.frRect.top    = ent->u.dir.rect.top;      data->u.dir.dirUsrInfo.frRect.left   = ent->u.dir.rect.left;      data->u.dir.dirUsrInfo.frRect.bottom = ent->u.dir.rect.bottom;      data->u.dir.dirUsrInfo.frRect.right  = ent->u.dir.rect.right;      break;    case cdrFilRec:      if (ent->flags & HFS_ISLOCKED)	data->u.fil.filFlags |=  (1 << 0);      else	data->u.fil.filFlags &= ~(1 << 0);      data->u.fil.filCrDat = d_mtime(ent->crdate);      data->u.fil.filMdDat = d_mtime(ent->mddate);      data->u.fil.filBkDat = d_mtime(ent->bkdate);      data->u.fil.filUsrWds.fdFlags      = ent->fdflags;      data->u.fil.filUsrWds.fdLocation.v = ent->fdlocation.v;      data->u.fil.filUsrWds.fdLocation.h = ent->fdlocation.h;      data->u.fil.filUsrWds.fdType =	d_getsl((const unsigned char *) ent->u.file.type);      data->u.fil.filUsrWds.fdCreator =	d_getsl((const unsigned char *) ent->u.file.creator);      break;    }}/* * NAME:	record->unpackdirent() * DESCRIPTION:	unpack catalog information into hfsdirent structure */void r_unpackdirent(unsigned long parid, const char *name,		    const CatDataRec *data, hfsdirent *ent){  strcpy(ent->name, name);  ent->parid = parid;  switch (data->cdrType)    {    case cdrDirRec:      ent->flags = HFS_ISDIR;      ent->cnid  = data->u.dir.dirDirID;      ent->crdate = d_ltime(data->u.dir.dirCrDat);      ent->mddate = d_ltime(data->u.dir.dirMdDat);      ent->bkdate = d_ltime(data->u.dir.dirBkDat);      ent->fdflags      = data->u.dir.dirUsrInfo.frFlags;      ent->fdlocation.v = data->u.dir.dirUsrInfo.frLocation.v;      ent->fdlocation.h = data->u.dir.dirUsrInfo.frLocation.h;      ent->u.dir.valence = data->u.dir.dirVal;      ent->u.dir.rect.top    = data->u.dir.dirUsrInfo.frRect.top;      ent->u.dir.rect.left   = data->u.dir.dirUsrInfo.frRect.left;      ent->u.dir.rect.bottom = data->u.dir.dirUsrInfo.frRect.bottom;      ent->u.dir.rect.right  = data->u.dir.dirUsrInfo.frRect.right;      break;    case cdrFilRec:      ent->flags = (data->u.fil.filFlags & (1 << 0)) ? HFS_ISLOCKED : 0;      ent->cnid  = data->u.fil.filFlNum;      ent->crdate = d_ltime(data->u.fil.filCrDat);      ent->mddate = d_ltime(data->u.fil.filMdDat);      ent->bkdate = d_ltime(data->u.fil.filBkDat);      ent->fdflags      = data->u.fil.filUsrWds.fdFlags;      ent->fdlocation.v = data->u.fil.filUsrWds.fdLocation.v;      ent->fdlocation.h = data->u.fil.filUsrWds.fdLocation.h;      ent->u.file.dsize = data->u.fil.filLgLen;      ent->u.file.rsize = data->u.fil.filRLgLen;      d_putsl((unsigned char *) ent->u.file.type,	      data->u.fil.filUsrWds.fdType);      d_putsl((unsigned char *) ent->u.file.creator,	     data->u.fil.filUsrWds.fdCreator);      ent->u.file.type[4] = ent->u.file.creator[4] = 0;      break;    }}

⌨️ 快捷键说明

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