Ejemplo n.º 1
0
/* produce a sparse image file */
int make_sparse_image(FILE *fp, Bit64u sec)
{
   Bit64u numpages;
   sparse_header_t header;
   size_t  sizesofar;
   size_t  padtopagesize;

   memset(&header, 0, sizeof(header));
   header.magic = htod32(SPARSE_HEADER_MAGIC);
   header.version = htod32(SPARSE_HEADER_VERSION);

   header.pagesize = htod32((1 << 10) * 32); // Use 32 KB Pages - could be configurable
   numpages = (sec / (dtoh32(header.pagesize) / 512)) + 1;

   header.numpages = htod32((Bit32u)numpages);

   if (numpages != dtoh32(header.numpages))
   {
     fclose (fp);
     fatal ("ERROR: The disk image is too large for a sparse image!");
     // Could increase page size here.
     // But note this only happens at 128 Terabytes!
   }

   if (fwrite(&header, sizeof(header), 1, fp) != 1)
   {
     fclose (fp);
     fatal ("ERROR: The disk image is not complete - could not write header!");
   }

   fileset(fp, 0xff, 4 * dtoh32(header.numpages));

   sizesofar = SPARSE_HEADER_SIZE + (4 * dtoh32(header.numpages));
   padtopagesize = dtoh32(header.pagesize) - (sizesofar & (dtoh32(header.pagesize) - 1));

   fileset(fp, 0, padtopagesize);

   return 0;
}
Ejemplo n.º 2
0
Archivo: scan.c Proyecto: Ntools/n
searchnum(int num,char *name)
{
	SCRN *lp;
	char *p;

	p = name;
	while((p = strchr(p,'/')) != NULL) *p= '\\';
	if(lng != ASM && strcmp(name,editfile[edfile].filename)) fileset(name,OFF);

	for(lp = editfile[edfile].topline;lp->num != num;lp= lp->fwd) {
		if(lp == NULL) {
			msg("Illegal error file <illegal line number>\a");
			return(NG);
		}
	}
	line= lp;
	curposy= disset((lastdisplay-widbase)/2);
	curposx= 0;
	return(OK);
}