コード例 #1
0
char ICACHE_FLASH_ATTR * combine_env_strings(char *temp, char * humi) {
	char *ptr;
	ptr = combine_strings("T:", temp);
	ptr = combine_strings(ptr, "*C H:");
	ptr = combine_strings(ptr, humi);
	ptr = combine_strings(ptr, "%");
	return ptr;
}
コード例 #2
0
ファイル: DIFF.C プロジェクト: 13436120/Cgames
/*
 * Name:    define_diff
 * Purpose: get info needed to initialize diff
 * Date:    October 31, 1992
 * Passed:  window:  pointer to current window
 * Notes:   allow the user to start the diff at the beginning of the
 *            file or at the current cursor location.  once the diff
 *            has been defined, the user may press one key to diff again.
 *          user may diff any two visible windows on the screen.
 */
int  define_diff( WINDOW *window )
{
int  rc;
char temp[MAX_COLS];
int  num1;
int  let1;
int  num2;
int  let2;
int  start;
char line_buff[(MAX_COLS+1)*2];  /* buffer for char and attribute  */
char buff[MAX_COLS*2];           /* buffer for char and attribute  */

   /*
    * get window number and letter of the first diff window.  then,
    *   verify that window - does it exit? is it visible?
    */
   *temp = '\0';
   rc = get_name( diff_prompt1, window->bottom_line, temp,
                  g_display.message_color );
   if (rc == OK) {
      rc = verify_number( temp, &num1 );
      if (rc == OK)
         rc = verify_letter( temp, &let1, &diff.w1 );
   } else
      return( ERROR );
   if (rc == ERROR) {
      combine_strings( buff, diff_prompt6a, temp, diff_prompt6b );
      error( WARNING, window->bottom_line, buff );
      return( ERROR );
   }

   /*
    * get and verify the next window number and letter to diff.
    */
   *temp = '\0';
   rc = get_name( diff_prompt2, window->bottom_line, temp,
                  g_display.message_color );
   if (rc == OK) {
      rc = verify_number( temp, &num2 );
      if (rc == OK)
         rc = verify_letter( temp, &let2, &diff.w2 );
   } else
      return( ERROR );
   if (rc == ERROR) {
      combine_strings( buff, diff_prompt6a, temp, diff_prompt6b );
      error( WARNING, window->bottom_line, buff );
      return( ERROR );
   }

   /*
    * are leading spaces significant?
    */
   save_screen_line( 0, window->bottom_line, line_buff );
   set_prompt( diff_prompt7a, window->bottom_line );
   start = get_yn( );
   restore_screen_line( 0, window->bottom_line, line_buff );
   if (start != ERROR)
      diff.leading =  start == A_YES ?  TRUE  :  FALSE;
   else
      return( ERROR );

   /*
    * are all spaces significant?
    */
   save_screen_line( 0, window->bottom_line, line_buff );
   set_prompt( diff_prompt7b, window->bottom_line );
   start = get_yn( );
   restore_screen_line( 0, window->bottom_line, line_buff );
   if (start != ERROR) {
      if (start == A_YES)
         diff.leading = diff.all_space = TRUE;
      else
         diff.all_space = FALSE;
   } else
      return( ERROR );

   /*
    * are blank lines significant?
    */
   save_screen_line( 0, window->bottom_line, line_buff );
   set_prompt( diff_prompt7c, window->bottom_line );
   start = get_yn( );
   restore_screen_line( 0, window->bottom_line, line_buff );
   if (start != ERROR)
      diff.blank_lines =  start == A_YES  ?  TRUE : FALSE;
   else
      return( ERROR );

   /*
    * is end of line significant?
    */
   save_screen_line( 0, window->bottom_line, line_buff );
   set_prompt( diff_prompt7d, window->bottom_line );
   start = get_yn( );
   restore_screen_line( 0, window->bottom_line, line_buff );
   if (start != ERROR)
      diff.ignore_eol =  start == A_YES  ?  TRUE : FALSE;
   else
      return( ERROR );

   /*
    * now, find out were to start the diff -- beginning of file or
    *   current cursor location.
    */
   save_screen_line( 0, window->bottom_line, line_buff );
   set_prompt( diff_prompt3, window->bottom_line );
   start = get_bc( );
   restore_screen_line( 0, window->bottom_line, line_buff );

   if (start != ERROR) {
      entab_linebuff( );
      if (un_copy_line( window->ll, window, TRUE ) == ERROR)
         return( ERROR );

      /*
       * if everything is everything, initialize the diff pointers.
       */
      diff.defined = TRUE;
      if (start == BEGINNING) {
         diff.d1 = diff.w1->file_info->line_list;
         diff.d2 = diff.w2->file_info->line_list;
         diff.rline1 = 1L;
         diff.rline2 = 1L;
         diff.bin_offset1 = 0;
         diff.bin_offset2 = 0;
         rc = differ( 0, 0, window->bottom_line );
      } else {
         diff.d1 = diff.w1->ll;
         diff.d2 = diff.w2->ll;
         diff.rline1 = diff.w1->rline;
         diff.rline2 = diff.w2->rline;
         diff.bin_offset1 = diff.w1->bin_offset;
         diff.bin_offset2 = diff.w2->bin_offset;
         rc = differ( diff.w1->rcol, diff.w2->rcol, window->bottom_line );
      }
   }
   return( rc );
}
コード例 #3
0
char *make_rwait_freq_graph( int *rc, char *url, char *style, int ssl, struct fetch_status *fetch)

{
    int event, off, cases, spot, heaps;
    char *result = 0, *title = 0;
    float *waitfreq = 0, *bracket = 0, span, delta, dmin= 0.0, dmax = 0.0;
    struct ckpt_chain *walk, *prev = 0;
    struct chart_options *chopt = 0;

    heaps = GR_FREQ_BRACKETS;
    title = combine_strings( rc, GR_FR_RWAIT_TITLE_LEAD, url);

    if( *rc == RC_NORMAL)
    {
        if( ssl) event = EVENT_SSL_NET_READ;
        else event = EVENT_READ_PACKET;

        cases = 0;
        prev = 0;
        for( walk = fetch->checkpoint; walk; walk = walk->next)
        {
            if( walk->event == event && walk->detail)
            {
                if( prev)
                {
                    delta = calc_time_difference( &prev->clock, &walk->clock, fetch->clock_res);
                    if( !cases) dmin = dmax = delta;
                    if( delta < dmin) dmin = delta;
                    if( delta > dmax) dmax = delta;
                    cases++;
		}
                prev = walk;
	    }
	}

/* printf( "<!-- dbg:: RWFR: cases:%d min:%f max:%f -->\n", cases, dmin, dmax); */

        bracket = (float *) malloc( heaps * (sizeof *bracket));
        waitfreq = (float *) malloc( heaps * (sizeof *waitfreq));

        if( !bracket || !waitfreq) *rc = ERR_MALLOC_FAILED;
        else
        {
            for( off = 0; off < heaps; off++) *(waitfreq + off) = 0.0;

            if( dmax == dmin)
            {
                *bracket = dmin;
                *waitfreq = cases;
                heaps = 1;
	    }
            else
            {
                span = (dmax - dmin) / heaps;
/* printf( "<!-- dbg:: RWFR: brackets:%d span:%f -->\n", heaps, span); */

                *bracket = dmin + (span / 2);

                for( off = 1; off < heaps; off++)
                  *(bracket + off) = *(bracket + off - 1) + span;

                prev = 0;
                for( walk = fetch->checkpoint; walk; walk = walk->next)
                {
                    if( walk->event == event && walk->detail)
                    {
                        if( prev)
                        {
                            delta = calc_time_difference( &prev->clock, &walk->clock, fetch->clock_res);
                            spot = (delta - dmin) / span;
                            if( spot >= heaps ) spot = heaps - 1;
                            *(waitfreq + spot) += 1;
                        }
                        prev = walk;
		    }
		}

                spot = 0;
                for( off = 0; off < heaps; off++)
                {
                    if( *(waitfreq + off) > 0.0)
                    {
                        *(waitfreq + spot) = *(waitfreq + off);
                        *(bracket + spot) = *(bracket + off);
                        spot++;
		    }
		}

                heaps = spot;
                if( !heaps) heaps = 1;
/*
for( off = 0; off < heaps; off++)
{
    printf( "!<-- dbg:: RWFR: data: %d. %f %f -->\n", off, *(bracket + off), *(waitfreq + off));
}
 */
	    }
	}

        chopt = alloc_chart_options();
        if( !chopt ) *rc = ERR_MALLOC_FAILED;
        else chopt->ymin_soft = 0;

        result = hf_generate_graph( rc, heaps, bracket, waitfreq, style, title, GR_FR_RWAIT_XAX_TITLE,
          GR_FR_RWAIT_YAX_TITLE, chopt);
    }

    if( title) free( title);
    if( waitfreq) free( waitfreq);
    if( bracket) free( bracket);
    if( chopt) free_chart_options( chopt);

    return( result);
}
コード例 #4
0
char *make_psize_freq_graph( int *rc, char *url, char *style, int ssl, struct fetch_status *fetch)

{
    int event, dlen, dmin, dmax, off, cases, spot, heaps;
    char *result = 0, *title = 0;
    float *psfreq = 0, *bracket = 0, span;
    struct ckpt_chain *walk;
    struct chart_options *chopt = 0;

    heaps = GR_FREQ_BRACKETS;
    title = combine_strings( rc, GR_FR_PSIZE_TITLE_LEAD, url);

    if( *rc == RC_NORMAL)
    {
        if( ssl) event = EVENT_SSL_NET_READ;
        else event = EVENT_READ_PACKET;

        cases = 0;
        for( walk = fetch->checkpoint; walk; walk = walk->next)
        {
            if( walk->event == event && walk->detail)
            {
                dlen = walk->detail->len;
                if( !cases) dmin = dmax = dlen;
                if( dlen < dmin) dmin = dlen;
                if( dlen > dmax) dmax = dlen;
                cases++;
	    }
	}

/* printf( "dbg:: PSFR: cases:%d min:%d max:%d\n", cases, dmin, dmax); */

        bracket = (float *) malloc( heaps * (sizeof *bracket));
        psfreq = (float *) malloc( heaps * (sizeof *psfreq));

        if( !bracket || !psfreq) *rc = ERR_MALLOC_FAILED;
        else
        {
            for( off = 0; off < heaps; off++) *(psfreq + off) = 0.0;

            if( dmax == dmin)
            {
                *bracket = dmin;
                *psfreq = cases;
                heaps = 1;
	    }
            else
            {
                span = ((float) (dmax - dmin)) / heaps;
/* printf( "dbg:: PSFR: brackets:%d span:%f\n", heaps, span); */

                *bracket = dmin + (span / 2);
                for( off = 1; off < heaps; off++)
                  *(bracket + off) = *(bracket + off - 1) + span;

                for( walk = fetch->checkpoint; walk; walk = walk->next)
                {
                    if( walk->event == event && walk->detail)
                    {
                        dlen = walk->detail->len;
                        spot = (dlen - dmin) / span;
                        if( spot >= heaps ) spot = heaps - 1;
                        *(psfreq + spot) += 1;
		    }
		}

                spot = 0;
                for( off = 0; off < heaps; off++)
                {
                    if( *(psfreq + off) > 0.0)
                    {
                        *(psfreq + spot) = *(psfreq + off);
                        *(bracket + spot) = *(bracket + off);
                        spot++;
		    }
		}

                heaps = spot;
                if( !heaps) heaps = 1;

/*
for( off = 0; off < heaps; off++)
{
    printf( "dbg:: PSFR: data: %d. %f %f\n", off, *(bracket + off), *(psfreq + off));
}
 */
	    }
	}

        chopt = alloc_chart_options();
        if( !chopt ) *rc = ERR_MALLOC_FAILED;
        else chopt->ymin_soft = 0;

        result = hf_generate_graph( rc, heaps, bracket, psfreq, style, title, GR_FR_PSIZE_XAX_TITLE,
          GR_FR_PSIZE_YAX_TITLE, chopt);
    }

    if( title) free( title);
    if( psfreq) free( psfreq);
    if( bracket) free( bracket);
    if( chopt) free_chart_options( chopt);

    return( result);
}
コード例 #5
0
char *make_accdata_graph( int *rc, char *url, char *style, int ssl, struct fetch_status *fetch)

{
    int event, cases, off;
    long accumulate = 0;
    char *result = 0, *title = 0, *mst_type = 0;
    float *elap = 0, *recbytes = 0, delta;
    struct ckpt_chain *stime, *walk;
    struct chart_options *chopt = 0;
    struct milestone *mstone = 0, *curr = 0, *last = 0;

    title = combine_strings( rc, GR_ACCDAT_TITLE_LEAD, url);

    if( *rc == RC_NORMAL)
    {
        if( ssl) event = EVENT_SSL_NET_READ;
        else event = EVENT_READ_PACKET;

        cases = 0;
        for( walk = fetch->checkpoint; walk; walk = walk->next)
          if( walk->event == event && walk->detail) cases++;
        cases++;
    }

    if( *rc == RC_NORMAL && cases < GR_MIN_CASES)
    {
        result = strdup( GR_PACK_NOGRAPH);
        if( !result) *rc = ERR_MALLOC_FAILED;
    }

    else if( *rc == RC_NORMAL)
    {
        elap = (float *) malloc( cases * (sizeof *elap));
        recbytes = (float *) malloc( cases * (sizeof *recbytes));

        if( !elap || !recbytes) *rc = ERR_MALLOC_FAILED;
        else
        {
            *elap = 0;
            *recbytes = 0;
            off = 1;
            stime = fetch->checkpoint;

            for( walk = fetch->checkpoint; walk; walk = walk->next)
            {
                if( walk->event == event && walk->detail)
                {
                    delta = calc_time_difference( &stime->clock, &walk->clock, fetch->clock_res);

                    *(elap + off) = delta;
                    accumulate += walk->detail->len;
                    *(recbytes + off) = accumulate;

                    off++;
		}
	    }

            chopt = alloc_chart_options();
            if( !chopt ) *rc = ERR_MALLOC_FAILED;
            else
            {
                for( walk = fetch->checkpoint; walk && *rc == RC_NORMAL; walk = walk->next)
                {
                    if( walk->event == EVENT_DNS_LOOKUP) mst_type = MSTONE_DNS;
                    else if( walk->event == EVENT_CONNECT_SERVER) mst_type = MSTONE_CONN;
                    else if( walk->event == EVENT_SSL_HANDSHAKE) mst_type = MSTONE_SSL;
                    else if( walk->event == EVENT_REQUEST_SENT) mst_type = MSTONE_SEND;
                    else if( walk->event == EVENT_FIRST_RESPONSE) mst_type = MSTONE_1STREAD;
                    else if( walk->event == EVENT_READ_ALL_DATA) mst_type = MSTONE_ALLDATA;
                    else mst_type = 0;

                    if( mst_type)
                    {
                        curr = (struct milestone *) malloc( sizeof *curr);
                        if( !curr) *rc = ERR_MALLOC_FAILED;
                        else
                        {
                            if( !mstone) chopt->mstone = mstone = curr;
                            if( last) last->next = curr;
                            curr->offset = calc_time_difference( &stime->clock, &walk->clock, fetch->clock_res);
                            curr->label = strdup( mst_type);
                            curr->next = 0;
                            last = curr;
			}
		    }
		}
	    }
	}

        result = hf_generate_graph( rc, cases, elap, recbytes, style, title, GR_ACCDAT_XAX_TITLE,
          GR_ACCDAT_YAX_TITLE, chopt);

    }

    if( title) free( title);
    if( elap) free( elap);
    if( recbytes) free( recbytes);
    if( chopt) free_chart_options( chopt);

    return( result);
}
コード例 #6
0
char *make_packet_graph( int *rc, char *url, char *style, int ssl, struct fetch_status *fetch)

{
    int event, cases, off;
    char *result = 0, *title = 0;
    float *elap = 0, *psize = 0, delta;
    struct chart_options *chopt = 0;
    struct ckpt_chain *stime, *walk;

    ENTER( "make_packet_graph" )

    title = combine_strings( rc, GR_PACK_TITLE_LEAD, url);

    if( *rc == RC_NORMAL)
    {
        if( ssl) event = EVENT_SSL_NET_READ;
        else event = EVENT_READ_PACKET;

        cases = 0;
        for( walk = fetch->checkpoint; walk; walk = walk->next)
          if( walk->event == event && walk->detail) cases++;
    }

    if( *rc == RC_NORMAL && cases < GR_MIN_CASES)
    {
        result = strdup( GR_PACK_NOGRAPH);
        if( !result) *rc = ERR_MALLOC_FAILED;
    }

    else if( *rc == RC_NORMAL)
    {
        elap = (float *) malloc( cases * (sizeof *elap));
        psize = (float *) malloc( cases * (sizeof *psize));
        chopt = alloc_chart_options();

        if( !elap || !psize || !chopt ) *rc = ERR_MALLOC_FAILED;
        else
        {
            off = 0;
            stime = 0;

            for( walk = fetch->checkpoint; walk; walk = walk->next)
            {
                if( walk->event == event && walk->detail)
                {
                    if( !stime) stime = walk;
                    delta = calc_time_difference( &stime->clock, &walk->clock, fetch->clock_res);

                    *(elap + off) = delta;                    
                    *(psize + off) = walk->detail->len;

                    off++;
		}
	    }

            chopt->data_line_alpha = GR_PACK_DATA_LINE_ALPHA;
            chopt->data_line_color = strdup( GR_PACK_DATA_LINE_COLOR );
	}

        INSUB( "make_packet_graph", "before-hf-generate" )
        result = hf_generate_graph( rc, cases, elap, psize, style, title, GR_PACK_XAX_TITLE,
          GR_PACK_YAX_TITLE, chopt );
    }

    if( title) free( title);
    if( elap) free( elap);
    if( psize) free( psize);
    if( chopt) free_chart_options( chopt);

    LEAVE( "make_packet_graph" )
    return( result);
}