예제 #1
0
/*
 * Generates the backbone of the pages.
 *
 * Formats the links, image references,
 * embeds navigation, and widgets
 *
 * @param *dir Container dir of the layout to process
 */
static void process_layout(Dir *dir) {
	int i;
	char **layout;
	char *placeholder;

	if (has_layout(dir) != 0) {
		layout = &(dir->files[dir->layout_index])->content;
	} else {
		return;
	}

	format_text_link(layout);
	format_text_img(layout);
	embed_navigation(layout);

	for (i=0; i < dir->files_count; i++) {
		if (strcmp(dir->files[i]->extension, "widget") == 0) {
			placeholder = (char *)smalloc(
					(strlen("{widget:")+strlen(dir->files[i]->name)+2) *
					sizeof(char)
			);
			strcpy(placeholder, "{widget:");
			strcat(placeholder, dir->files[i]->name);
			strcat(placeholder, "}");

			replace_placeholder(
					layout,
					placeholder,
					dir->files[i]->content
			);

			sfree(placeholder);
		}
	}
}
예제 #2
0
/**
 * Processes all the pages in the given directory
 *
 * @see format text
 * @see embed_into_layout
 *
 * @param *dir Directory to process
 */
void generator_process_pages(Dir *dir) {
	int i;
	char *layout = NULL;

	if (has_layout(dir) != 0) {
		layout = dir->files[dir->layout_index]->content;
	}

	for (i=0; i < dir->files_count; i++) {
		if ( strcmp(dir->files[i]->extension, "page") == 0) {
			/*format*/
			format_text(&(dir->files[i])->content);

			/*embed into layout*/
			if (layout != NULL) {
				embed_into_layout(
					&(dir->files[i])->content,
					layout
				);
			}
		}
	}
}
int h5repack_verify(const char *fname,
                    pack_opt_t *options)
{
 hid_t  fid;      /* file ID */
 hid_t  dset_id=-1;  /* dataset ID */
 hid_t  dcpl_id=-1;  /* dataset creation property list ID */
 hid_t  space_id=-1; /* space ID */
 int    ret=1;
 unsigned int i;
 int j;
 trav_table_t  *travt=NULL;

 /* open the file */
 if ((fid=H5Fopen(fname,H5F_ACC_RDONLY,H5P_DEFAULT))<0 )
  return -1;

 for ( i=0; i<options->op_tbl->nelems; i++)
 {
  char* name=options->op_tbl->objs[i].path;
  pack_info_t *obj = &options->op_tbl->objs[i];

/*-------------------------------------------------------------------------
 * open
 *-------------------------------------------------------------------------
 */
  if ((dset_id=H5Dopen(fid,name))<0)
   goto error;
  if ((space_id=H5Dget_space(dset_id))<0)
   goto error;
  if ((dcpl_id=H5Dget_create_plist(dset_id))<0)
   goto error;

/*-------------------------------------------------------------------------
 * filter check
 *-------------------------------------------------------------------------
 */
  for ( j=0; j<obj->nfilters; j++)
  {
   if (has_filter(dcpl_id,obj->filter[j].filtn)==0)
    ret=0;
  }

/*-------------------------------------------------------------------------
 * layout check
 *-------------------------------------------------------------------------
 */
  if ((obj->layout!=-1) && (has_layout(dcpl_id,obj)==0))
   ret=0;

/*-------------------------------------------------------------------------
 * close
 *-------------------------------------------------------------------------
 */
  if (H5Pclose(dcpl_id)<0)
   goto error;
  if (H5Sclose(space_id)<0)
   goto error;
  if (H5Dclose(dset_id)<0)
   goto error;

 }


/*-------------------------------------------------------------------------
 * check for the "all" objects option
 *-------------------------------------------------------------------------
 */

 if (options->all_filter==1 || options->all_layout==1)
 {

  /* init table */
  trav_table_init(&travt);

  /* get the list of objects in the file */
  if (h5trav_gettable(fid,travt)<0)
   goto error;

  for ( i=0; i<travt->nobjs; i++)
  {
   char* name=travt->objs[i].name;

   switch ( travt->objs[i].type )
   {
   case H5G_DATASET:

 /*-------------------------------------------------------------------------
  * open
  *-------------------------------------------------------------------------
  */
    if ((dset_id=H5Dopen(fid,name))<0)
     goto error;
    if ((space_id=H5Dget_space(dset_id))<0)
     goto error;
    if ((dcpl_id=H5Dget_create_plist(dset_id))<0)
     goto error;

 /*-------------------------------------------------------------------------
  * filter check
  *-------------------------------------------------------------------------
  */
    if (options->all_filter==1 ){
     if (has_filter(dcpl_id,options->filter_g.filtn)==0)
      ret=0;
    }

 /*-------------------------------------------------------------------------
  * layout check
  *-------------------------------------------------------------------------
  */
    if (options->all_layout==1){
     pack_info_t pack;
     init_packobject(&pack);
     pack.layout=options->layout_g;
     pack.chunk=options->chunk_g;
     if (has_layout(dcpl_id,&pack)==0)
      ret=0;
    }


  /*-------------------------------------------------------------------------
   * close
   *-------------------------------------------------------------------------
   */
    if (H5Pclose(dcpl_id)<0)
     goto error;
    if (H5Sclose(space_id)<0)
     goto error;
    if (H5Dclose(dset_id)<0)
     goto error;

    break;
   default:
    break;
   } /* switch */

  } /* i */

  /* free table */
  trav_table_free(travt);
 }

/*-------------------------------------------------------------------------
 * close
 *-------------------------------------------------------------------------
 */

 if (H5Fclose(fid)<0)
  return -1;

 return ret;

error:
 H5E_BEGIN_TRY {
  H5Pclose(dcpl_id);
  H5Sclose(space_id);
  H5Dclose(dset_id);
  H5Fclose(fid);
  if (travt)
   trav_table_free(travt);
 } H5E_END_TRY;
 return -1;
}