コード例 #1
0
ファイル: dsk2cdt.c プロジェクト: pelrun/dsk2cdt2disc
unsigned int write_track_block(TZX_FILE *pTZXfile, struct membuf tracks[], int first_track, int last_track)
{
  char blockbuf[MAX_BLOCK_SIZE];
  int track;
  int track_count = last_track - first_track + 1;
  int block_ptr = (track_count+1) * 2; // space for pointer table at start plus 0x0000 terminator
  int block_tbl_ptr = 0;
  
  printf("writing tracks %d-%d\n", first_track, last_track);

  memset(blockbuf, 0, MAX_BLOCK_SIZE);
  
  for (track = first_track; track <= last_track; track++)
  {
    int track_len = membuf_memlen(&tracks[track]);
    
    if (track_len > 0) // skip null tracks
    {
      memcpy(blockbuf+block_ptr, membuf_get(&tracks[track]), track_len);
      blockbuf[block_tbl_ptr++] = block_ptr & 0xff;
      blockbuf[block_tbl_ptr++] = block_ptr >> 8;

      membuf_free(&tracks[track]);
      
      block_ptr += track_len;
    }
  }  
コード例 #2
0
void membuf_delete(struct membuf **sbp)
{
    struct membuf *sb;

    sb = *sbp;
    membuf_free(sb);
    free(sb);
    sb = NULL;
    *sbp = sb;
}
コード例 #3
0
ファイル: membuf.c プロジェクト: HuxyUK/xpenology-3.x
static int membuf_release(struct inode *in, struct file *file)
{
	struct membuf *buf = (struct membuf *)file->private_data;

	membuf_unmap(buf);
	membuf_free(buf);

	kfree(buf);

	return 0;
}
コード例 #4
0
ファイル: namedbuf.c プロジェクト: alexkazik/prepack6502
void sbe_free(struct sbe *e)
{
    membuf_free(e->mb);
}