コード例 #1
0
ファイル: virtfile.c プロジェクト: pgul/lgate
VIRT_FILE *virt_fopen(char *fname, char *flags)
{
  VIRT_FILE *f;

  f = malloc(sizeof(*f));
  if (f==NULL)
  { errno=ENOMEM;
    return NULL;
  }
  if (buf==NULL)
    buf=malloc(BUFSIZE);
  if (buf==NULL)
  { free(f);
    errno=ENOMEM;
    return NULL;
  }
  f->curpos=f->offbody=msgsize=f->lines=f->waslf=0;
#ifdef __MSDOS__
  f->file = fopen(fname, flags);
  if (f->file==NULL)
  { free(f);
    return NULL;
  }
  strncpy(f->fname, fname, sizeof(f->fname));
#else
  f->buf=createbuf(BUFSIZE);
  if (f->buf==NULL)
  { free(f);
    errno=ENOMEM;
    return NULL;
  }
  f->bufsize=BUFSIZE;
#endif
  return f;
}
コード例 #2
0
ファイル: linbuf.c プロジェクト: nassar/amberfish
int aflinbuf(FILE *f, int mem)
{
	off_t fsize;

	afgetfsize(f, &fsize);
	bufsize = ((size_t) mem) * 1048576;
/*	printf("aflinbuf: %i %lu %lu\n", mem, (unsigned long) fsize,
	(unsigned long) bufsize);*/
	bufsize = fsize < bufsize ? fsize : bufsize;
	fbuf = f;
	if (createbuf() < 0)
		return -1;
	if (fillbuf() < 0)
		return -1;
	
	return 0;
}