예제 #1
0
파일: hamilton.c 프로젝트: mitcse/CSE-Labs
BOOL addToPath (int v) {
	if (!existsInPath(v)) {
		path[pi++] = v;
		return YES;
	}
	return NO;
}
예제 #2
0
파일: fslib.c 프로젝트: orionmiller/a4
inode * getFile(FILE *fs, char ** path, uint32_t inode_off, uint32_t part_off, uint32_t zone_size)
{
  uint32_t inode_num = ROOT_INODE_NUM;

  uint8_t *dir_data;
  inode *Inode;
  uint32_t i;
  uint32_t dir_num_entries;
  FATALCALL((Inode=malloc(INODE_SIZE))==NULL,"malloc");

  getInode(Inode, ROOT_INODE_NUM, inode_off, fs);

  if(path[0] == NULL)/*magic number*/
    return Inode;

  for(i=0; path[i] != NULL; i++)
    {
      FATALCALL((dir_data=malloc(Inode->size))==NULL,"malloc");
      dir_data = getData(fs, Inode, part_off, zone_size);
      dir_num_entries = (Inode->size/DIR_ENTRY_SIZE);
      inode_num = existsInPath(dir_data, dir_num_entries, path[i]); 
      if (inode_num == 0)
	return NULL;

      getInode(Inode, inode_num, inode_off, fs);

      if (path[i+1] == NULL)
	return Inode;

      free(dir_data);
    }
  return Inode;
}