コード例 #1
0
ファイル: proc_metadice.c プロジェクト: kzembower/waterslide
static inline FILE * get_fp(proc_instance_t * proc, time_t sec, wsdata_t * wsd) {
     if (!sec) {
          sec = time(NULL);
     }
     sysutil_test_time_boundary(&proc->splittime, sec);

     wslabel_t * label = NULL;
     if (wsd->label_len) {
          //get last label
          label = wsd->labels[wsd->label_len -1];
     }
     label_write_t * lw = listhash_find_attach(proc->file_table,
                                               (const char *)&label, sizeof(wslabel_t *));

     if (proc->max_records && (lw->records >= proc->max_records)) {
          lw->current_boundary = 0; //reset boundary - forces opening of new file
     }
     if (lw->current_boundary != proc->splittime.current_boundary) {
          lw->current_boundary = proc->splittime.current_boundary;
          if (lw->fp) {
               fclose(lw->fp);
               if (lw->splitfile) {
                    tool_print("finished writing to %s", lw->splitfile);

                    if (lw->moveprefix) {
                         sysutil_rename_file(lw->splitfile, lw->movefile);
                         tool_print("moved %s to %s", lw->splitfile, lw->movefile);
                    }
               }
          }
          if (!lw->prefix) {
               lw->prefix = create_prefix(proc->writefile, label, proc->env);
               if (proc->movefile) {
                    lw->moveprefix = create_prefix(proc->movefile, label,
                                                   proc->env);
               }
          }
          lw->fp = sysutil_open_timedfile(lw->prefix, proc->extension,
                                          proc->splittime.current_boundary,
                                          proc->splittime.increment_ts,
                                          lw->splitfile, MAX_SPLITFILENAME);
          if (lw->moveprefix) {
               sysutil_name_timedfile(lw->moveprefix, proc->extension,
                                 proc->splittime.current_boundary,
                                 proc->splittime.increment_ts,
                                 lw->movefile, MAX_SPLITFILENAME);
          }
          lw->records = 0;

     }
     lw->records++;

     return lw->fp;
}
コード例 #2
0
void create_prefix(int *infix,int *suffix,int infixhead,
	int infixrear,int suffixhead,int suffixrear,
	int *prefix){
	if(suffixrear-suffixhead<1)
		return;
	int root_v=suffix[suffixrear-1];
	prefix[sp++]=root_v;

	int root_position_infix=findposition_infix(infix,infixhead,infixrear,root_v);
	int split_suffix=root_position_infix-infixhead+suffixhead;

	//leftsubtree:
	create_prefix(infix,suffix,infixhead,root_position_infix,suffixhead,split_suffix,prefix);
	//rightsubtree:
	create_prefix(infix,suffix,root_position_infix+1,infixrear,split_suffix,suffixrear-1,prefix);
}
コード例 #3
0
ファイル: irc_types.c プロジェクト: benwaffle/botty
irc_prefix* parse_prefix(char *prefix)
{
	irc_prefix *ret;
	char *save_pointer;

	if(strstr(prefix, "!") == NULL)
	{
		ret = create_prefix(NULL, NULL, prefix);
		return ret;
	}

	char *nick = strtok_r(prefix, "!", &save_pointer);
	char *user = strtok_r(NULL, "@", &save_pointer);
	char *host = strtok_r(NULL, "", &save_pointer);

	ret = create_prefix(nick, user, host);

	return ret;
}
コード例 #4
0
int main(int argc, char const *argv[])
{
	int infix[]={1,1,1,2,3,3,4,5,5,6,7,8,11,12,14,14,16,18,19};
	int suffix[]={1,1,3,2,3,5,6,7,5,4,1,11,14,12,18,16,14,19,8};
	int size=sizeof(suffix)/sizeof(int);
	int *prefix=malloc(sizeof(int)*size);
	create_prefix(infix,suffix,0,size,0,size,prefix);
	printf("prefix:\n");
	int i;
	for(i=0;i<size;i++)
		printf("%d ", prefix[i]);
	printf("\n");
	return 0;
}